2012-04-29 141 views
2

所以我试图使用返回值的函数,但我希望这些值被返回到一个不同的函数。下面是我需要的一个例子。接受函数参数的返回值

def returner(): 
    x=1 
    y=2 
    z=3 
    return x,y,z 
def tester(arg1,arg2,arg3): 
    print arg1,arg2,arg3 

tester(returner()) 

我想做的事情是打印1,2,3,但我一直没有能够做到这一点,因为它说“测试仪只需要3个参数,给定1”。有什么我失踪或是不可能的?

回答

11

你想用* - 提示图标(或星级)操作:

tester(*returner()) 

这是争论拆包 - 它解压缩的返回值的元组为参数的函数。

>>> def test(): 
... return 1,2,3 
... 
>>> def test2(arg1, arg2, arg3): 
... print(arg1, arg2, arg3) 
... 
>>> test2(*test()) 
1 2 3 
+0

非常感谢!你会得到你的积分。很快:) –

+0

这是一个很好的答案,但术语是有点关闭。大多数人称它为星形运算符,该操作称为参数解包。它有助于了解正确的术语,以便您可以在需要时进行搜索。仅供参考,这是一个链接到文档:http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists –

+2

@RaymondHettinger [Splat获得使用以及](http://stackoverflow.com/问题/ 2322355 /合适的名称换蟒蛇运营商)。我确实说过*它将返回值的元组解包到参数*中,这是'参数解包',并有更多解释。无论哪种方式,我编辑澄清。 –