Python 2.X 中的以下代码如您所愿打印“a : 2”:
def f():
#a = 1
exec "a = 2" in globals(), locals()
for k,v in locals().items(): print k,":",v
#a = 3
f()
但是,如果您取消注释“a = 1”,那么它会打印“a : 1”,这是我没想到的。更奇怪的是,如果您取消注释“a = 3”行,那么它根本不会打印任何内容,这是我绝对没想到的(我有一个令人费解的错误,我提炼出来)。
我认为答案隐藏在有关 locals() 和 globals() 的文档中,或者可能隐藏在其他类似的问题中,但我认为值得将这种表现形式提出来。
我很想了解 Python 解释器在这里的想法,以及解决方法的建议。