Python教程说(https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces)
事实上,局部变量已经静态确定。
如何理解这一点?基于我所知道的 static 意味着变量的类型在编译时确定。但考虑到例如
,这是不正确的x = 1
x = 'str'
其中变量x在运行时动态绑定到int或string类型的对象。
答案 0 :(得分:2)
他们的存在,以及变量查找是本地的还是全局的,都是在编译时确定的。
答案 1 :(得分:2)
除了其他答案外,请考虑以下代码产生的错误。
x = 1
def function():
y = x + 1
x = 3
function()
这将产生一个错误,例如“UnboundLocalError:在赋值之前引用的局部变量'x',因为确定x
是function
中的局部变量,所以它应该在本地范围内找到,否定全球定义。