我有一个python函数(python 2.5),其定义如下:
def Foo(a, b='Silly', c='Walks', d='Spam', e='Eggs', f='Ni', *addl):
其中
addl
可以是任意数量的字符串(文件名)来处理。我对所有的默认值都很满意,但是我有文件名要放入
addl
。我倾向于这样做:
Foo('[email protected]', addl=('File1.txt', 'File2.txt'))
但这会导致以下错误:
TypeError: Foo() got an unexpected keyword argument 'addl'
有没有一种语法可以简洁地用第一个必需的参数和我的(可变数目的)附加字符串调用
Foo
?或者在进入addl
参数范围之前,我一直在重复指定所有默认值吗?出于参数的考虑,无法修改或重构函数定义。
最佳答案
好的,如果函数不能被修改,那么为什么不创建包装器呢?
def foo_with_defaults(a, *addl):
Foo(a, *(Foo.func_defaults + addl))
foo_with_defaults('[email protected]', *('File1.txt', 'File2.txt'))
关于python - Python调出位置参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36405581/