* argsおよび** kwargsのデフォルト引数

user1563285:

Python 2.xのでデフォルト引数を使用する適切な方法である(私は2.7を使用)、*argsおよび**kwargs
私はこのトピックに関連するSOに関する質問を見つけましたが、それはPython 3に関するものです
* args、** kwargsおよびオプションの/デフォルトの引数を使用してPython関数を呼び出す

そこで、彼らはこの方法がうまくいくと言います:

def func(arg1, arg2, *args, opt_arg='def_val', **kwargs):
    #...

2.7では、結果はになりSyntaxErrorます。そのような関数を定義するための推奨される方法はありますか?
私はそれをこのように機能させましたが、もっと良い解決策があると思います。

def func(arg1, arg2, *args, **kwargs):
    opt_arg ='def_val'
    if kwargs.__contains__('opt_arg'):
        opt_arg = kwargs['opt_arg']
    #...
nneonneo:

の前にデフォルトの引数を置くだけです*args

def foo(a, b=3, *args, **kwargs):

これでb、キーワード引数または2番目の位置引数として渡すと、明示的に設定されます。

例:

foo(x) # a=x, b=3, args=(), kwargs={}
foo(x, y) # a=x, b=y, args=(), kwargs={}
foo(x, b=y) # a=x, b=y, args=(), kwargs={}
foo(x, y, z, k) # a=x, b=y, args=(z, k), kwargs={}
foo(x, c=y, d=k) # a=x, b=3, args=(), kwargs={'c': y, 'd': k}
foo(x, c=y, b=z, d=k) # a=x, b=z, args=(), kwargs={'c': y, 'd': k}

その場合、位置によって割り当てられるfoo(x, y, b=z)ため、特に機能しませんb


このコードはPython 3でも機能します。Python 3でデフォルトの引数を後ろ *args置くと、位置ではなく名前でのみ指定できる「キーワードのみ」の引数になります。Python 2でキーワードのみの引数が必要な場合は、@ mgilsonのソリューションを使用できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

* args、** kwargsおよびオプションの/デフォルト引数を使用してPython関数を呼び出す

分類Dev

* argsおよび** kwargs Python

分類Dev

* argsおよび** kwargs Python

分類Dev

python * argsおよび** kwargs

分類Dev

* argsおよび** kwargsの型注釈

分類Dev

Python:関数の引数のデフォルト値を* argsまたは** kwargsに渡す

分類Dev

* argsおよび** kwargsへの関数の引数の割り当てをシミュレートします

分類Dev

"驚き最小の原則" および可変デフォルト引数

分類Dev

「String args []」および「public static void main(String [] args)」のstaticの説明

分類Dev

const funcName =(args)=> {};の違いは何ですか。およびconstfuncName =(args)=>();?

分類Dev

引数およびデフォルトの引数値としてのハッシュ

分類Dev

C ++テンプレート関数-複数のタイプ、デフォルトおよび...引数?

分類Dev

C ++および混合プログラミングでのポインタのデフォルト引数

分類Dev

デコレータ関数のスコープと* argsおよび** kwargsを理解する

分類Dev

デフォルトおよび可変長の引数を持つインスタンスメソッド

分類Dev

Flask、Marshmallow 3、およびwebargsuse_argsが引数の解析に失敗する

分類Dev

** kwargsとデフォルトの引数

分類Dev

JavaScriptのスプラット演算子、Pythonの* argsおよび** kwargsに相当しますか?

分類Dev

デフォルトの引数を持つPHP呼び出し関数

分類Dev

Kotlinのデフォルト引数:ゼロ引数の呼び出しを禁止する

分類Dev

Python3.7およびexcess_argsに関するSWIGの問題

分類Dev

CListViewのデフォルトのsortおよびsortableattributes

分類Dev

AndroidおよびJava8のデフォルトの方法

分類Dev

TypeScriptおよび... args

分類Dev

デフォルトのXML名前空間、JDOM、およびXPath

分類Dev

KおよびVのHashMapデフォルトタイプ

分類Dev

Docker、Traefik 2.2、およびデフォルトの証明書

分類Dev

QTextCursor、QTextTable、およびデフォルトの左マージン

分類Dev

Springのデフォルトおよび本番構成

Related 関連記事

  1. 1

    * args、** kwargsおよびオプションの/デフォルト引数を使用してPython関数を呼び出す

  2. 2

    * argsおよび** kwargs Python

  3. 3

    * argsおよび** kwargs Python

  4. 4

    python * argsおよび** kwargs

  5. 5

    * argsおよび** kwargsの型注釈

  6. 6

    Python:関数の引数のデフォルト値を* argsまたは** kwargsに渡す

  7. 7

    * argsおよび** kwargsへの関数の引数の割り当てをシミュレートします

  8. 8

    "驚き最小の原則" および可変デフォルト引数

  9. 9

    「String args []」および「public static void main(String [] args)」のstaticの説明

  10. 10

    const funcName =(args)=> {};の違いは何ですか。およびconstfuncName =(args)=>();?

  11. 11

    引数およびデフォルトの引数値としてのハッシュ

  12. 12

    C ++テンプレート関数-複数のタイプ、デフォルトおよび...引数?

  13. 13

    C ++および混合プログラミングでのポインタのデフォルト引数

  14. 14

    デコレータ関数のスコープと* argsおよび** kwargsを理解する

  15. 15

    デフォルトおよび可変長の引数を持つインスタンスメソッド

  16. 16

    Flask、Marshmallow 3、およびwebargsuse_argsが引数の解析に失敗する

  17. 17

    ** kwargsとデフォルトの引数

  18. 18

    JavaScriptのスプラット演算子、Pythonの* argsおよび** kwargsに相当しますか?

  19. 19

    デフォルトの引数を持つPHP呼び出し関数

  20. 20

    Kotlinのデフォルト引数:ゼロ引数の呼び出しを禁止する

  21. 21

    Python3.7およびexcess_argsに関するSWIGの問題

  22. 22

    CListViewのデフォルトのsortおよびsortableattributes

  23. 23

    AndroidおよびJava8のデフォルトの方法

  24. 24

    TypeScriptおよび... args

  25. 25

    デフォルトのXML名前空間、JDOM、およびXPath

  26. 26

    KおよびVのHashMapデフォルトタイプ

  27. 27

    Docker、Traefik 2.2、およびデフォルトの証明書

  28. 28

    QTextCursor、QTextTable、およびデフォルトの左マージン

  29. 29

    Springのデフォルトおよび本番構成

ホットタグ

アーカイブ