2016-04-20 9 views
2

私はのための解決策を見つけることができない一般的な質問のビットの出力、入力は、私は現在、2つの機能</p> <pre><code>def func1(*args, **kwargs): ... return a,b </code></pre> <p>と</p> <pre><code>def func2(x,y): ... return variables </code></pre> <p>を持っている別の機能

が含まれています私のコードを評価したいです

variables = func2(func1()) 

func2が1つしか与えられていない場合、2つの引数を必要とするため、Pythonは受け入れません。私の現在の解決策は、中間ダミーの再定義を行っているが、私のコードは非常に混乱している(私の "func1"は多くのパラメータの出力を持つ)。

これには洗練されたソリューションがありますか?

+0

func1は2つのパラメータを返します。これはfunct2の入力として使用します。 2番目の引数はfunc1によって出力される2番目の値です –

+0

このような関数呼び出しを入れ子にすることをお勧めします。彼らはデバッグする豚になることができます。 – cdarke

答えて

4
def func1(): 
    return 10, 20 


def func2(x, y): 
    return x + y 

results = func2(*func1()) 
print results 

--output:-- 
30 

機能は一つだけを返すことができますので、func1()は、実際にタプル(10, 20)を返します。 2つのことを得るためには、タプルを*で爆発させる必要があります。

+0

スターは何を正確にしていますか? – Adib

+1

[This](http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters)。 – TigerhawkT3

+0

ありがとう、私は間違ってfunc1から返されたタプルが解凍されると仮定していました。 –

関連する問題