目標:別の関数でローカル変数を使用する必要があります。それはPythonで可能ですか?別の関数でローカル変数にアクセスすることは可能ですか?
他の機能でローカル変数を使用したいと思います。私の場合は、カウンタを使用して接続の数と接続の数を表示する必要があるので、カウンタを維持しています。これを実装するために、私はcountのサンプルコードを書いて、別の関数でローカル変数を返します。
t
& my_reply
は、test()
の機能でどのように印刷できますか?
コード:counter_glob.py
my_test = 0
t = 0
def test():
print("I: ",t)
print("IIIIIIII: ",my_reply)
def my():
global t
reply = foo()
t = reply
print("reply:",reply)
print("ttttt:",t)
def foo():
global my_test
my_test1 = 0
my_test += 1
print my_test1
my_test1 = my_test
my_test += 1
print("my_test:",my_test1)
return my_test1
my()
結果:
> $ python counter_glob.py
0
('my_test:', 1)
('reply:', 1)
('ttttt:', 1)
「ローカル」という意味ではありません。それに加えて、あなたのコードのどこにでも 'my_reply'という名前の変数は定義しません。サンプルコードで – martineau
、私は自分の関数を持っています、私はグローバル変数に返信を割り当てています。私の関数でグローバル変数を印刷するとき、つまりt。期待どおりの値を印刷します。私はなぜテスト機能では印刷されていないのか分からないのですか?私の関数ではtが返信で更新されているからです。 –
関数 'my()'では、 'reply'という名前のローカル変数に値を割り当て、それを' t'という名前のグローバル変数に代入します。 'test()'関数ではグローバル変数 't'を参照し、どこにも定義されていない' my_reply'という名前を付けます。 'my_reply'は、他の関数のローカル変数' reply'の別の名前ではありません。あなたはそれをすることはできません。 [my answer](http://stackoverflow.com/a/19327712/355230)に示されている手法を使って 'my()'に関数属性を作成し、 'test()'にアクセスすることができます。これにより、 'my.reply'を定義することができます。 – martineau