【发布时间】:2010-04-05 21:15:19
【问题描述】:
我有两个 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 的角色有很多功能)。
有人知道如何做到这一点吗?我想可以使用某种内省,但我可能是错的。
【问题讨论】:
-
"
I can't use the first solution in this particular instance" 为什么不呢? -
我正在使用一个解析器,它调用 Python 函数但不支持在语法中解包。
标签: python function-composition