def h(y):
x = x + 1
x = 5
h(x)
print(x)
所以这是从MIT 6.00.1课程开始的。此代码段引发UnboundedLocalError:赋值之前引用的局部变量'x'。
我什至尝试这样做:
x = 5
def h(y):
x = x + 1
h(x)
print(x)
但这也给出了UnboundLocalError
。我的思考过程是在函数创建并声明到全局堆栈之前声明x = 5
(如果措辞不正确,抱歉),将确保我们调用h(x)
时,全局作用域变量x
将有一个值传递给该函数。
我也很好奇这个有点类似的代码片段不会产生UnboundLocalError
:
x = 12
def g(x):
x = x + 1
return x
g(x)
我正在通过Python Tutor运行这些代码段,我(相当确定)我通常了解代码执行时事物发生的顺序。
对不起,在此先谢谢您-我想了解这里的实际情况,而不是掩盖它。我意识到通常本地范围内的变量不太容易混淆,也不太可能引起奇怪的错误。