def main(): if True: x1 = 1 if False: x2 = 2 # 可以正常访问,对于熟悉 C 的人来说,这可能有点奇怪 # x1 被识别为局部变量,虽然它的「作用域」已经结束了 print(x1) # UnboundLocalError: cannot access local variable 'x2' # where it is not associated with a value # python 可以检测到 x2 是一个局部变量,但是 x2 并没有被赋值 # print(x2) # NameError: name 'x3' is not defined. # print(x3) if __name__ == "__main__": main()
AI:Python 在函数执行前会扫描整个函数体,确定哪些变量是局部变量。这个决定基于:
AI: global 的作用是告诉 Python 函数中的变量绑定的是模块级别的全局变量,而不是局部变量。你需要 global 的情况是 重新绑定全局变量时。如果你不重新绑定该变量,而是对其内容进行操作(例如 set 和 get 对字典进行修改),是不需要声明 global 的。
TODO