为什么我不能使用 exec() 从函数内部更改全局变量?当赋值语句位于 exec() 之外时,它可以正常工作。这是我的问题的一个例子:
>>> myvar = 'test'
>>> def myfunc():
... global myvar
... exec('myvar = "changed!"')
... print(myvar)
...
>>> myfunc()
test
>>> print(myvar)
test
Per the docs http://docs.python.org/reference/simple_stmts.html#the-exec-statement, the exec
语句采用两个可选表达式,默认为globals()
and locals()
,并且始终在中执行更改(如果有)locals()
one.
所以,只要更明确/具体/精确......:
>>> def myfunc():
... exec('myvar="boooh!"', globals())
...
>>> myfunc()
>>> myvar
'boooh!'
...你将能够随心所欲地破坏全局变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)