【发布时间】:2014-07-10 21:15:15
【问题描述】:
这里的问题是我想将一个元组作为参数传递给第二个函数。在“重复!”的呼声之前我已经看过一篇关于类似问题的帖子Expanding tuples into arguments
这是我正在测试的代码:
def producer():
return ('a','b')
def consumer(first, second, third):
print first+second+third
arg = producer()
consumer(*arg, 'c') # expected abc
这会输出错误:
There's an error in your program *** only named arguments may follow *expression
这个有用的错误消息导致将参数顺序切换到consumer('c', *arg),但这并不能完全解决问题,因为它会输出'cab'。
所以我的问题是,有没有更好的方法将元组传递给多参数函数并保留顺序?
对于奖励积分,“*”运算符有什么作用? (这在上一篇文章中没有解释)
【问题讨论】:
-
查看What does ** (double star) and * (star) do for Python parameters? 了解
*的作用。它不是运算符。 -
虽然它现在不合法,但草案PEP 448 提议在未来的 Python 版本中使
func(*args, arg)和许多其他解包变体合法。另请参阅issue 2292,其中讨论了实现此行为的尝试。唉,过去一年左右似乎没有太大进展。