在Python 2.x (我使用2.7),使用
我用以下方式使其工作,但我猜可能还有更好的解决方案。
*args
和**kwargs
的默认参数的正确方法是什么?
我在SO上找到了一个相关主题的问题,但那是针对Python 3的:
使用*args,**kwargs和可选/默认参数调用Python函数
在那里,他们说这种方法可行:def func(arg1, arg2, *args, opt_arg='def_val', **kwargs):
#...
在2.7中,这将导致SyntaxError
。是否有推荐的方法来定义这样的函数?我用以下方式使其工作,但我猜可能还有更好的解决方案。
def func(arg1, arg2, *args, **kwargs):
opt_arg ='def_val'
if kwargs.__contains__('opt_arg'):
opt_arg = kwargs['opt_arg']
#...
__contains__
。始终使用in
:'opt_arg' in kwargs
。(更好的方式是像mgilson的答案中那样使用kwargs.get('opt_arg', 'def_val')
)。 - nneonneo