【发布时间】:2021-03-09 14:27:28
【问题描述】:
此代码不起作用(UnboundLocalError: local variable 'x' referenced before assignment):
x = 5
def thing():
x = x + 1
thing()
这个可以(只将x改为i):
x = 5
def thing():
i = x + 1
thing()
我预计第一个变量会创建一个名为 x 的新变量,其值为 6(保持外部变量不变),这就是第二个示例中的 i。这里发生了什么?
似乎当一个变量第一次在作用域中创建时,它会检查它是否存在于任何外部作用域中,如果已经找到则引发错误,如果已经找到则引发错误。
现在,我的问题是,这样做的目的是什么?
【问题讨论】: