python教程说(https://docs.python.org/3/tutorial/classes.html#pypython-scopes-and-namespaces(
实际上,局部变量已经静态确定。
如何理解这一点?根据我所知道的 static ,意味着变量的类型在编译时确定。但是考虑到例如
,这不是真的x = 1
x = 'str'
在运行时,变量x动态绑定到类型int或字符串的对象。
参考:Python是否强烈键入?
除了其他答案外,考虑以下代码产生的错误。
x = 1
def function():
y = x + 1
x = 3
function()
这将产生一个错误,例如" unboundlocalerror:分配前引用的本地变量'x'",因为确定 x
是 function
中的局部变量,因此应在本地范围中找到它,否定全局定义。
他们的存在,是否在编译时间确定变量查找是局部的。
该文档中也有一个语句。
如果未声明非本地,这些变量是只读的(尝试写入这样的变量只会在最内向的范围,留下相同命名的外部变量不变(。
在Jared Goguen的代码中,条款x = 3
将使Python在编译期间将x
视为本地。