Django19番目-* argsと** kwargsの使用シナリオと使用シナリオ

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]を組み合わせると、任意のパラメータを渡すことができます。これは、関数パラメータの数が不明な場合に非常に効果的な方法であると同時に、関数を大幅に強化します。スケーラビリティ。

③。[位置パラメータ、デフォルトパラメータ、変数パラメータ、キーワードパラメータ]の関連知識は、標準化された関数の書き方を学ぶ上で最も重要な基礎知識であり、使い方も知っておく必要があります。

 

おすすめ

転載: blog.csdn.net/LYX_WIN/article/details/114529595