簡體   English   中英

如何設置星形參數的默認值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM