2016-09-16 5 views
1

testadderがtestadderから呼び出された後にテストに1を追加するように、testadderからmainのテスト変数にアクセスしたいとします。Python 3が別の関数から関数の変数を変更しています

何らかの理由で、このようにリストに1を追加できますが、変数は追加できません。関数がネストされていないので、非ローカル宣言は機能しません。

これを回避する方法はありますか?

def testadder(test, testing): 
    test.append(1) 
    testing += 1 

def main(): 
    test = [] 
    testing = 1 
    testadder(test, testing) 
    print(test, testing) 

main() 
+0

「テスト」と「テスト」の一般的な内容について詳しく説明できますか?あなたがしたいことを理解するのは少し難しいです。 –

答えて

1

リストは変更可能ですが、整数は変更できません。変更された変数を返し、再割り当てします。

def testadder(test, testing): 
    test.append(1) 
    return testing + 1 

def main(): 
    test = [] 
    testing = 1 
    testing = testadder(test, testing) 
    print(test, testing) 

main() 
+0

もう1つ。 1つ以上の変数を返すとしたら、同様に動作するのでしょうか?それとも何とか分割する必要がありますか? – Uninvolved

+0

はい、 'return a、b'と' a、b = func() 'です。 –

関連する問題