2012-04-29 30 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

これは良い答えですが、用語は少しオフです。ほとんどの人々はそれをスターオペレータと呼び、操作は引数アンパックと呼ばれます。適切な用語を理解して、必要なときに検索することができます。参考までに、ここにdocsへのリンクがあります:http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists –

+2

@RaymondHettinger [Splatも同様に使用されます](http://stackoverflow.com/ questions/2322355/proper-name-for-python-operator)を参照してください。そして、私は、戻り値のタプルを引数*に展開していると言っています。これは、引数のアンパックで、もう少し説明します。いずれにせよ、私は説明のために編集した。 –

関連する問題