我有兩個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