评论区还有问题
你们是不是对 global 有什么误解The
global 的生效范围是有限的
你在 test2 里使用 global ,那么只在test2里生效,退出函数一切恢复原样
emmmmm,很经典的问题
先给出官方的解释
首先说 = 在 Python 中被称为 assignment 。如果当前本地空间不存在这个变量名,那么会在本地空间注册这个变量名,并把值和变量名绑定。如果原本存在这个变量名,那么会进行重新绑定。
好了,给你一段代码
tt = "1"
def abc():
tt = 2
print(tt)
abc()
这代码应该输出 2 为什么?
很简单,首先 assignment 的操作在本地注册了一个新的变量,与 global 同名。这样按照 LEGB 的查找规则,在一层查找到后不会继续向上查询
所以你得问题很简单了
在 test1 函数中执行了 tt="2"后,本地有这个变量了,于是后面 print 出来就是本地变量的值。
最后输出结果就是 123
Reference: