如何理解Python中的全局作用域和局部作用域?



我是一个Python新手,想知道下面的情况。

x = 1
def func():
print(x)
x = 2
return x

所以我得到了UnboundLocalError:赋值前引用的局部变量'x'。但是如果我没理解错的话——Python一行一行地读取和执行代码。在函数的第一条语句中"print(x)"它必须传递全局变量x,也就是等式1,但我得到了错误。请解释一下,我觉得很简单。

我想你的问题在python文档的FAQ中也有解释

这是因为当你对作用域中的变量赋值时,该变量成为该作用域的局部变量,并且类似地隐藏外部作用域中的命名变量。自foo中的最后一条语句开始将新值赋给x,编译器将其识别为局部值变量。因此,当先前的print(x)尝试打印未初始化的局部变量和错误结果。

相关内容

  • 没有找到相关文章