Python局部变量是否静态确定?

时间:2017-05-29 03:30:30

标签: python static

Python教程说(https://docs.python.org/3/tutorial/classes.html#python-scopes-and-namespaces

  

事实上,局部变量已经静态确定。

如何理解这一点?基于我所知道的 static 意味着变量的类型在编译时确定。但考虑到例如

,这是不正确的
x = 1
x = 'str'

其中变量x在运行时动态绑定到int或string类型的对象。

参考:Is Python strongly typed?

2 个答案:

答案 0 :(得分:2)

他们的存在,以及变量查找是本地的还是全局的,都是在编译时确定的。

答案 1 :(得分:2)

除了其他答案外,请考虑以下代码产生的错误。

x = 1

def function():
    y = x + 1
    x = 3

function()

这将产生一个错误,例如“UnboundLocalError:在赋值之前引用的局部变量'x',因为确定xfunction中的局部变量,所以它应该在本地范围内找到,否定全球定义。