python局部变量静态确定



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'",因为确定 xfunction中的局部变量,因此应在本地范围中找到它,否定全局定义。

他们的存在,是否在编译时间确定变量查找是局部的。

该文档中也有一个语句。

如果未声明非本地,这些变量是只读的(尝试写入这样的变量只会在最内向的范围,留下相同命名的外部变量不变(。

在Jared Goguen的代码中,条款x = 3将使Python在编译期间将x视为本地。

最新更新