1

この質問がすでに尋ねられている/回答されている場合は申し訳ありませんが、そうであると予想していましたが、関連する質問を見つけることができませんでした...

2 つの必須引数、1 つの名前付き引数、および不明な数の他の名前のない引数を取る python 関数を作成したいと思います。

def my_function(arg1, arg2, arg3=None, *other_args):
    pass

これは Python 2.x で可能ですか?
関数は、可変長引数リストに加えて名前付き引数を受け入れることができますか?

答えは「いいえ」だと思います。その場合、利用できる唯一の解決策は次のようなものになると思います。

def my_function(arg1, arg2, **kwargs):
    arg3 = kwargs["arg3"]
    other_args = kwargs["other_args"]

あれは正しいですか?

4

1 に答える 1

1

arg3その構文は確かに有効ですが、名前付きパラメーター (例: ) として使用される場合にのみバインドされ、my_function(1, 2, arg3 = 3)それ以外の場合は最初の 2 つを超えるすべての引数が によってキャッチされる*other_argsように関数シグネチャを記述できると思います。答えはノーだ。*argsオプションの引数は名前付けによって指定できますが、通常の引数のように位置指定でもあり、またはのようなキャッチオールに頼る前に、十分なパラメーターが利用可能な場合に入力されます**kwargs

キーワード引数を使用して、おそらくあなたとまったく同じように書くでしょう

于 2010-06-29T22:31:45.930 に答える