我有一个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/

10-09 16:45