我在 python 中弄乱了范围,发现了一些我认为很奇怪的东西:
g = 5
def foo(a):
if a:
global g
g = 10
else:
g = 20
print("global g: ",g)
foo(False)
print("global g: ",g) # 20?! What?
foo(True)
print("global g: ",g)
我认为第二次打印应该是“5”,因为全局语句从未执行过,但很明显,输出是 20(!)。
这背后的逻辑是什么?