2016-07-05 17 views
-2

以下の関数は関数の前に宣言された変数を持っていますが、関数内に変数を出力するときは、目的の値が出力されますが、関数の後に出力されたとき、変数の値は宣言時と同じです。関数から変数の前に(グローバル変数なしで)宣言された変数に値を返すにはどうすればよいですか?

foo = 0 
def method(bar, baz): 
    foo = bar + baz 
    print(foo) 
    return foo 
method(1, 3) 
print(foo) 

グローバル変数を使用すると、目的の値が出力されますが、グローバル変数が含まれていない回答が優先されます。

+0

あなたが提供するスニペットであなたの機能を実行することはありません。 [最小限の例](http://stackoverflow.com/help/mcve)を教えてください。 – syntonym

+3

'foo =メソッド(1、3)'? – jonrsharpe

+0

私の謝罪、機能の名前で作られた単純なばかげた間違い。 –

答えて

0

厳密に言えば、グローバル変数を持たないグローバル変数を持つことはできないので、これがあなたの望むものであるとは完全にはわかりません。あなたができることはの変更可能なグローバル変数です。これは明示的に変更することができますglobal

foo = [] # list is mutable, just like dict, set, ... 
def method(bar, baz): 
    foo[:] = [bar + baz] # replace foo's *elements* via [:] 
    print(foo) 
    return foo 
method(1, 3) 
print(foo) 
関連する問題