首页 > 解决方案 > 可选参数的默认值

问题描述

我正在 python 中创建一个带有可选参数的函数*args。这个函数调用另一个传递这个可选参数的函数。但是,当某个条件适用时,我希望可选参数具有某个默认值,而不是函数调用中传递的值。在下面的代码片段中很清楚,简单地设置一个新值*args是不正确的,但正确的方法是什么?

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

标签: pythonoptional-parametersoptional-arguments

解决方案


您可以通过 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如果可以,请使用。


推荐阅读