キーワード引数をきれいに渡す方法は?

Mark Omo

他のサブ関数を呼び出す関数を作成するとき、呼び出し元がそれらのサブ関数の任意のキーワード引数を渡せるようにしたいことがよくあります。ただし、これを実装する現在の方法は厄介であり、より明確で、簡潔で、保守しやすい方法を探しています。

以下は、私が現在これを実装する方法の例です。

def foo(a, print_line="Hello World!"):
    print a, print_line

def bar(a, number=2, multiple=4):
    print a, number * multiple

def baz(a, **kwargs):
    if "print_line" in kwargs:
        foo(a, print_line=kwargs["print_line"])
    else:
        foo(a)

    bar_kwargs = dict()
    if "number" in kwargs:
        bar_kwargs["number"] = kwargs["number"]
    if "multiple" in kwargs:
        bar_kwargs["multiple"] = kwargs["multiple"]
    bar(a, **bar_kwargs)

この方法はエラーが発生しやすく、表現したいすべてのkwargを実装する必要があります。私は時々逃げることができfoo(a, print_line=kwargs.get("print_line", False)ますが、kwargのデフォルトの引数を保持したいと思います。

MCBama

シンプル。kwargs自体をサブ関数に渡し、kwargs変数をサブ関数に追加するだけです。

def foo(a, print_line="Hello World!", **kwargs):
    print a, print_line

def bar(a, number=2, multiple=4, **kwargs):
    print a, number * multiple

def baz(a, **kwargs):
    foo(a, **kwargs)
    bar(a, **kwargs)

これが機能するのは、サブ関数が必要な引数を具体的に定義しながら、任意の数のキーワード引数を受け取ることができるようになったためです。したがって、次のよう{'print_line':'test_line', 'number':1,'multiple':2}見えるkwarg dictは、両方の機能に対して完全に機能します。

コメントで要求されたとおり:

class SomeoneElsesClass:
  def someone_elses_function(self, a, foo="bar"):
    print(foo)

class MyClass(SomeoneElsesClass):
  def someone_elses_function(self, a, foo="bar2", **kwargs):
    super(MyClass, self).someone_elses_function(a, foo)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Django RequestFactoryを使用するときに追加のキーワード引数を渡す方法は?

分類Dev

辞書として渡すときに予期しないキーワード引数を削除/無視するにはどうすればよいですか?

分類Dev

キーワード引数キーとして変数値を渡す方法は?

分類Dev

関数を呼び出すときに変数のキーワード引数を渡す方法

分類Dev

キーワード引数のキーとしてバイトを関数に渡すにはどうすればよいですか?

分類Dev

** kwargsを受け入れる関数に不正な名前のキーワード引数を渡す方法

分類Dev

キーワード引数をパラメーターとして関数に渡すにはどうすればよいですか?

分類Dev

pybind11でPythonのキーワード引数を渡す方法は?

分類Dev

pybind11でPythonのキーワード引数を渡す方法は?

分類Dev

キーワード引数をdo-blockに渡すことはできますか?

分類Dev

Pythonで多数のキーワード引数を自動的に渡す方法

分類Dev

recurを使用するときにキーワードに渡される引数の数が間違っています

分類Dev

渡されたキーワード引数の順序を決定する方法は?

分類Dev

Pythonの関数に可変キーワード引数を渡すにはどうすればよいですか?

分類Dev

pre-forwardフックで使用されるforwardにキーワード引数を渡すにはどうすればよいですか?

分類Dev

ロボットフレームワークのキーワードを参照して引数を渡す方法は?

分類Dev

キーワード引数ではなく、位置引数としてdictを渡す方法

分類Dev

Kotlinに有界ワイルドカード型引数を渡す方法は?

分類Dev

アップデートインに渡すことができる引数としてキーワードを渡すにはどうすればよいですか?

分類Dev

名前付きキーワード引数を条件付きで関数に渡す

分類Dev

キーワード引数で@retryを使用し、関数を渡す方法

分類Dev

Pythonラッパー関数でキーワード引数のキーワード名だけを渡すことはできますか?

分類Dev

文字列をキーワード引数として使用するにはどうすればよいですか?

分類Dev

キーワード引数として `class`を使用するにはどうすればよいですか?

分類Dev

キーワード引数を受け入れる関数にハッシュを渡す

分類Dev

キーワード引数として空白を含む文字列を渡す方法

分類Dev

埋め込まれた引数と通常の引数をロボットフレームワークの1つのキーワードにまとめて渡す方法はありますか?

分類Dev

カスタムキーワード引数を関数に渡す

分類Dev

Julia-キーワード引数を別の関数に渡しますか?

Related 関連記事

  1. 1

    Django RequestFactoryを使用するときに追加のキーワード引数を渡す方法は?

  2. 2

    辞書として渡すときに予期しないキーワード引数を削除/無視するにはどうすればよいですか?

  3. 3

    キーワード引数キーとして変数値を渡す方法は?

  4. 4

    関数を呼び出すときに変数のキーワード引数を渡す方法

  5. 5

    キーワード引数のキーとしてバイトを関数に渡すにはどうすればよいですか?

  6. 6

    ** kwargsを受け入れる関数に不正な名前のキーワード引数を渡す方法

  7. 7

    キーワード引数をパラメーターとして関数に渡すにはどうすればよいですか?

  8. 8

    pybind11でPythonのキーワード引数を渡す方法は?

  9. 9

    pybind11でPythonのキーワード引数を渡す方法は?

  10. 10

    キーワード引数をdo-blockに渡すことはできますか?

  11. 11

    Pythonで多数のキーワード引数を自動的に渡す方法

  12. 12

    recurを使用するときにキーワードに渡される引数の数が間違っています

  13. 13

    渡されたキーワード引数の順序を決定する方法は?

  14. 14

    Pythonの関数に可変キーワード引数を渡すにはどうすればよいですか?

  15. 15

    pre-forwardフックで使用されるforwardにキーワード引数を渡すにはどうすればよいですか?

  16. 16

    ロボットフレームワークのキーワードを参照して引数を渡す方法は?

  17. 17

    キーワード引数ではなく、位置引数としてdictを渡す方法

  18. 18

    Kotlinに有界ワイルドカード型引数を渡す方法は?

  19. 19

    アップデートインに渡すことができる引数としてキーワードを渡すにはどうすればよいですか?

  20. 20

    名前付きキーワード引数を条件付きで関数に渡す

  21. 21

    キーワード引数で@retryを使用し、関数を渡す方法

  22. 22

    Pythonラッパー関数でキーワード引数のキーワード名だけを渡すことはできますか?

  23. 23

    文字列をキーワード引数として使用するにはどうすればよいですか?

  24. 24

    キーワード引数として `class`を使用するにはどうすればよいですか?

  25. 25

    キーワード引数を受け入れる関数にハッシュを渡す

  26. 26

    キーワード引数として空白を含む文字列を渡す方法

  27. 27

    埋め込まれた引数と通常の引数をロボットフレームワークの1つのキーワードにまとめて渡す方法はありますか?

  28. 28

    カスタムキーワード引数を関数に渡す

  29. 29

    Julia-キーワード引数を別の関数に渡しますか?

ホットタグ

アーカイブ