我正在python中制作一个函数,该函数需要一个可选参数*args
。该函数还调用另一个传递此可选参数的函数。但是,当某个条件适用时,我希望可选参数具有某个默认值,而不是函数调用中传递的值。在下面的代码片段中很明显,简单地为*args
设置新值是不正确的,但是这样做的正确方法是什么?
def function(arg1, arg2, *args):
if condition:
*args = value
function2(*args)
您可以通过参数在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
。
显然*args
是一个列表,因此我不得不将其指定为args = [value]
,而不是*args = value
。这样就解决了问题。