我有两个Python函数,它们的函数定义中都带有可变参数。举个简单的例子:Python列表为*参数?
def func1(*args):
for arg in args:
print arg
def func2(*args):
return [2 * arg for arg in args]
我想它们组合 - 在func1(func2(3, 4, 5))
- 但我不想func1
args
是([6, 7, 8],)
,我希望它是(6, 7, 8)
,仿佛它被称为func1(6, 7, 8)
而不是func1([6, 7, 8])
。
通常,我只会使用func1(*func2(3, 4, 5))
或者有func1
检查以查看args[0]
是否是一个列表。不幸的是,我不能在这个特定的实例中使用第一个解决方案,并且应用第二个解决方案需要在许多地方进行这样的检查(在func1
的角色中有很多功能)。
有没有人有一个想法如何做到这一点?我想可以使用某种内省,但我可能是错的。
“'在这个特殊的instance'我不能使用第一个解决方案” 为什么不呢? – interjay 2010-04-05 21:16:51
我正在使用调用Python函数的解析器,但不支持在语法中解包。 – exupero 2010-04-06 10:54:49