2016-09-07 4 views
1

私の問題は本当に簡単ですが、残念ながら私はそれを解決する方法を見つけることができません。複数の値を持つdefを1回だけ実行し、別のdefに値を使用する方法はありますか?

def Bから複数の値を一度だけ返すdef Aを実行したいとします。私はそれを4回実行するコードのこのブロックを使用している場合は

def A(): 
    x = 1 
    y = 2 
    z = 3 
    return a,b,c 

def B(): 
    d = A[0] + A[1] 
    e = A[2] - A[0] 
    print d,e 

B() 

私はこのコードのブロックを書きました!

ありがとうございます。

+0

あなたのB機能でAを呼び出すだけです。 –

+0

実際の 'A'関数は、定数' tuple'を返すよりも複雑であると思いますか?さもなければ、関数を避け、モジュールの最上位レベルで 'A = 1,2,3 'を定義するだけで、それを呼び出さずに索引付けすることもできます。 – ShadowRanger

答えて

1

コードに間違いがあります。Aは関数であり、戻り値を取得するにはA()と呼びます。代わりにあなたがun-の添字であるA[0]のようにそれを使用して、あなたが返された値を再利用することができますので、あなたはB関数内で一時変数を割り当てることができ、以下の変更が動作するはずです:

In [54]: def A(): 
    ...:  x = 1 
    ...:  y = 2 
    ...:  z = 3 
    ...:  return x,y,z # I fixed your typo too 
    ...: 
    ...: def B(): 
    ...:  a = A() 
    ...:  d = a[0] + a[1] 
    ...:  e = a[2] - a[0] 
    ...:  print(d,e) 
    ...: 
    ...: B() 

    3 2 
+1

ありがとう@Anzelあなたは正しいです。 –

+0

@PanosAngelopoulos - 問題ではない、ええ、それはあなたが作ったばかりの過ちミスだと思うし、それが解決してうれしい:-) – Anzel

1

私はこれを行うだろう。

def B(): 
    a, b, c = A() 
    d = a + b 
    e = c - a 
    print d,e 

しかし、あなたの機能A()は、それが(x, y, zないa, b, c)を宣言しているのと同じ変数を返していることを確認してください。

+0

Thanks @elethan! –

関連する問題