、すべての位置引数は、任意の*args
の前に来なければなりません引数。 Python 3では、あなたの現在の構文は合法で、 "keyword-only"引数としてoption
を作成します。
def f(option=None, *args):
...
あなたがが任意の追加の引数を提供したい場合、これはoption
引数を提供するために、あなたを必要とする、あなたが望むものではないかもしれない:
だから、あなたのオプションは、引数の順序を変更することがあり。
もう1つのオプションは、関数に渡されたキーワード引数をキャッチするために、**kwargs
構文を使用することです。それはoption
(およびない他の予期しないキーワード)を持っている場合は、位置引数として名前を付けずに確認することができます。
def f(*args, **kwargs):
option = kwargs.pop("option", None)
if kwargs:
raise TypeError("unexpected keyword arguments found: {}".format(kwargs))
...
それとも
のPython 3にアップグレードすることができ