[英]How do I set the default arguments for python functions when not specified?
[英]How can I set a default for star arguments?
我有一個接受*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
是否真實:
def g(*args):
if not args:
args = (1, 2, 3)
return "I received {}!".format(', '.join(str(arg) for arg in args))
如果沒有args
傳遞給函數,它將導致一個空元組,其計算結果為False
。
如果沒有收到參數, args
將是一個空元組。 您無法在方法簽名本身中添加默認值,但您可以檢查args
是否為空並將其替換為函數內的回退值。
def g(*args):
if not args:
args = (1, 2, 3)
return 'I received {}!'.format(', '.join(str(arg) for arg in args))
def g(*args):
if not args:
args = [1, 3, 5]
return "I received {}!".format(', '.join(str(arg) for arg in args))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.