このコードを実行すると:
a = '1'
vars()['a'] = '2'
print a
次の出力が得られます。
2
しかし、このコードを実行すると:
def bar():
a = '1'
vars()['a'] = '2'
print a
bar()
次の出力が得られます。
1
ここで私の質問は、なぜそれが起こるのか、2 番目のケースで最初のケースと同じ解決策を得るにはどうすればよいかということです。
編集:
本当に解決策を見つけることができませんでしたが、その周りに小さなハックを見つけました... exec は使用しませんが:
def bar():
a = "a"
b = "b"
exec a+"="+b
print a
bar()
結果は次のとおりです。
b
誰かがより良い解決策を見つけることができれば、それは素晴らしいことです。この方法でグローバル変数を設定したり、おかしなことをしたりしているわけではないので、心配しないでください。