関数内にグローバル変数を作成できます。
def f():
global x
x=1
f()
print x
しかし、f()にその変数の名前しかない場合、同じことを行うことができますか?
def f(varname):
exec('global ' + varname)
exec(varname + '=1')
f('x')
print x
これは機能しません-「名前'x'は定義されていません」。これがひどいプログラミングスタイルだと言わないでください-私はそれを知っています。問題は、これがPythonで実行できるかどうかです。
回答ありがとうございますが、なぜexecが機能しなかったのかという疑問が残ります。どういうわけか別のコンテキストで実行されていますか?別のモジュールの一部であるため、別のモジュールにグローバル変数が作成されますか?