を与えることに:私は次の出力を得るVARS()私はこのコードを実行すると、Pythonは異なる出力
a = '1'
vars()['a'] = '2'
print a
:
def bar():
a = '1'
vars()['a'] = '2'
print a
bar()
:
2
しかしを、私はこのコードを実行すると
私は以下の出力を得ます:
1
私の質問は、なぜこのようなことが起こり、どのようにして2番目のケースに私に最初のケースと同じ解決策を与えることができるのですか?
編集:
が本当に解決策を見つけることができませんでしたが、私はそれの周りに小さなハックを見つけた...私はむしろexecを使用していますけど。私は結果を取得します
def bar():
a = "a"
b = "b"
exec a+"="+b
print a
bar()
:
b
誰かがより良い解決策を見つけることができれば、それは素晴らしいことでしょう。私はこのようにグローバル変数を設定したり、狂ったことをしているわけではないので、心配しないでください。
私はこのクラスは違いがないと信じています。それは、ローカルスコープとグローバルスコープの問題です。 – delnan
また、関数内からこのようにグローバル変数を設定しようとしていると、何かがひどく間違っている可能性があります。 – 9000