可选参数的默认值

时间:2019-12-15 11:20:45

标签: python optional-parameters optional-arguments

我正在python中制作一个函数,该函数带有可选参数*args。该函数还调用另一个传递此可选参数的函数。但是,当某个条件适用时,我希望可选参数具有某个默认值,而不是函数调用中传递的值。在下面的代码片段中很明显,仅为*args设置新值是不正确的,但是正确的方法是什么?

def function(arg1, arg2, *args):
    if condition:
        *args = value
    function2(*args)

2 个答案:

答案 0 :(得分:0)

您可以通过args中的索引来识别参数:

def function(arg1, arg2, *args):
    if condition:
        args = list(args)
        if len(args) == 0:  # the second arg in args was not set
            args.append("first default")
        if len(args) == 1:
            args.append("second default")
    function2(*args)

但是正如您所看到的-这有点丑陋。如果您要使用很多默认的位置参数,它将涉及很多if语句。如果可以,请使用**kwargs

答案 1 :(得分:0)

显然*args是一个列表,因此我不得不将其分配为args = [value],而不是*args = value。这样就解决了问题。