I.はじめに
Pythonで書かれたコードでは、これらの2つの単語[* args]と[** kwargs]がよく見られます。わかりやすく言うと、これらの2つの単語は、実際にはプログラマーが同意した単なる変数名です。率直に言って、次のように使用されます。このように書いてください変数名、[* a]と[** b]も書けます。
[* args]と[** kwargs]の基本的な使用法を明確にし、明確化した後の実際のプロジェクト開発に習熟するために、関連するメモをとる必要があります。メモによるクイックレビューを忘れた場合。
関連する詳細:
①。[args]は[arguments]という単語の略語で、可変パラメーターを意味します。
②。[kwargs]は[keywordarguments]という単語の略語で、キーワード引数を意味します。
③。[* args]と[** kwargs]これらは、実際にはPython言語でのパラメーター入力の2つの形式です。
④.Python入力パラメーターには、位置パラメーター、デフォルトパラメーター、変数パラメーター、キーワードパラメーターの4種類しかありません。
⑤。関数の入力パラメータを入力するときは、最初に位置パラメータ、次にデフォルトパラメータ、次に変数パラメータ、最後にキーワードパラメータの4種類の入力パラメータがこの基本原則に準拠している必要があります。
⑥。関数/メソッドの入力パラメーターの組み合わせでは、変数パラメーターはキーワードパラメーターの前にしか配置できないため、入力パラメーター[* args]は入力パラメーター[** kwargs]の前にのみ配置する必要があります。
2. [* args]の使用法
[* Args]は、変数パラメーターリストを関数の引数argsに渡すことです。このパラメーターリストの数は不明であり、長さは0にすることもできます。次のコードは、[* args]の使用方法を示しています。
2.1。最初のステップ:最初にそのような関数[test1]を記述します。
def test1(name,age=10,*args):
print("第一个入参为位置参数name,且位置参数name的值为:%s"%name)
print("第二个入参为默认参数age,且默认参数age的值为:%s"%age)
print("第三个入参是可变参数args,数据类型为元祖")
print(type(args))
for i in args:
print("可变参数args里的每个值为:%s"%i)
2.2。ステップ2:メイン関数を確立し、関連する入力パラメーター値を関数[test1]に割り当てます。
test1("lucas",20,"a1","a2","a3","a3")
2.3。3番目のステップ:関数[test1]を呼び出し、次の結果を取得します。
結果を通じて、次の結論を得ることができます。
①。最初のパラメータ[name]は渡さなければならないパラメータであり、パラメータ名は定位置パラメータです。
②。2番目のパラメータ[age]はオプションのパラメータであり、パラメータageはデフォルトのパラメータです。
③。3番目のパラメーター[* args]はオプションのパラメーターであり、パラメーターargsは可変パラメーターです(可変パラメーターのデータ型はプリミティブの祖先です)。これらの4つの入力パラメーター値["a1"、 "a2"、 "a3"、 "a3"]は、変数パラメーターリストとしてパラメーターargsに渡され、タプルのタプルとして使用されます。
3。【** kwargs】の使い方
[** Kwargs]は、可変キーワードパラメータの辞書を関数の引数kwargsに渡すことであり、パラメータリストの長さは0または他の値にすることができます。次のコードは、[** kwargs]の使用方法を示しています。
3.1。最初のステップ:最初にそのような関数を記述します[test2]。
def test2(name, sex="男",*args, **kwargs):
print('必填参数name的值:%s'%name)
print('默认参数sex的值:%s'%sex)
print(type(kwargs))
for i in args:
print ('可变参数args里的每个值为', i)
for k, v in kwargs.items():
print ('关键字参数kwargs的,每个key为: %s, 每个value为:%s;' % (k, v))
3.2。2番目のステップ:関連する入力パラメーター値を関数[test2]に割り当てます。
test2(1,"女","A",False,{"a1":1},3,[2,"a2",{"c1":7}],k1=1,k2=2,k3=[11,22,"33",{"b1":11}],k4={"r1":1})
3.3。3番目のステップ:関数[test2]を呼び出し、次の結果を取得します。
結果を通じて、次の結論を得ることができます。
①.argsデータ型はタプルですが、kwargsデータ型は辞書dictであり、[* args]は[** kwargs]の前にのみ配置できます。
4.関連する学習資料
①。[* args]と[** kwargs]の詳細な調査については、次のブログを参照してください:https://www.cnblogs.com/yangzilaing/p/13470775.html
②。[位置パラメータ、デフォルトパラメータ、変数パラメータ、キーワードパラメータ]の詳細については、https://www.cnblogs.com/bingabcd/p/6671368.htmlを参照してください。
2.研究の提案:
①。[* args]と[** kwargs]の基本原則を理解し、それらの使用方法を知っていることを確認してください。
②。関数内で[* args]と[** kwargs]を組み合わせると、任意のパラメータを渡すことができます。これは、関数パラメータの数が不明な場合に非常に効果的な方法であると同時に、関数を大幅に強化します。スケーラビリティ。
③。[位置パラメータ、デフォルトパラメータ、変数パラメータ、キーワードパラメータ]の関連知識は、標準化された関数の書き方を学ぶ上で最も重要な基礎知識であり、使い方も知っておく必要があります。