を受け入れる関数がありますが*args
、何も提供されていない場合に備えて、デフォルトのタプルを設定したいと思います。(これはdef f(*args=(1, 3, 5))
、を介しては不可能SyntaxError
です。これにより、が発生します。)これを達成するための最良の方法は何でしょうか。目的の機能を以下に示します。
f()
# I received 1, 2, 3!
f(1)
# I received 1!
f(9, 3, 72)
# I received 9, 3, 72!
次の関数g
は正しい機能を提供しますが、私は好むでしょう*args
。
def g(args=(1, 2, 3)):
return "I received {}!".format(', '.join(str(arg) for arg in args))
g()
# I received 1, 2, 3!
g((1,))
# I received 1!
g((9, 3, 72))
# I received 9, 3, 72!
引数を受け取らない場合はargs
、空のタプルになります。メソッドシグネチャ自体にデフォルト値を追加することはできませんargs
が、空かどうかを確認して、関数内のフォールバック値に置き換えることはできます。
def g(*args):
if not args:
args = (1, 2, 3)
return 'I received {}!'.format(', '.join(str(arg) for arg in args))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加