>>> def fn(sc):
... exec(sc)
此功能运行正常。
答案 0 :(得分:1)
我认为在"A4 = A4+1"
内执行fn
而不表明A4
是全局变量不会影响全局变量,因为每个函数都有其自己的局部变量字典。
如果您需要fn
是包含exec
调用的单独函数,则可以使用global
关键字将变量指定为全局变量。
>>> def fn(sc):
... exec(sc)
...
>>> value = 1
>>> fn('value += 1')
>>> value
1
>>> fn('global value; value += 1')
>>> value
2
或者,exec
将接受传递给它的显式globals
和locals
字典。这些功能的帮助信息指出,您无法通过更新locals()
来可靠地更改变量的值,但是您可以globals()
来。只要要更新全局变量,就不需要传递locals()
。
>>> def fn(sc):
... exec(sc, globals())
...
>>> value = 1
>>> fn('value += 1')
>>> value
2