他のサブ関数を呼び出す関数を書くとき、私は呼び出し元がそれらのサブ関数の任意のキーワード引数を渡すことを許可したいことがよくあります。しかし、私がこれを実装する現在の方法は面倒で、私はより明確で簡潔で保守可能な方法を探しています。きれいにキーワードargsを渡すには?
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