UnboundLocalError: local variable 'width' referenced before assignment
时间: 2023-09-23 22:03:29 浏览: 85
Python UnboundLocalError和NameError错误根源案例解析
5星 · 资源好评率100%
这个错误通常是因为在函数中使用了未被赋值的变量。在 Python 中,当你在函数中使用一个变量时,Python 会首先在函数内部查找这个变量,如果没有找到,它会继续在外部查找。如果在函数内部对这个变量进行了赋值,Python 会认为这个变量是局部变量,并且不会再去外部查找同名的变量。
如果你在函数中使用一个全局变量,你需要在函数内部使用 `global` 关键字来告诉 Python 这个变量是全局变量。例如:
```python
width = 10
def set_width(new_width):
global width
width = new_width
set_width(20)
print(width) # 输出 20
```
如果你想在函数中使用一个外部变量,但是不想让 Python 把它认为是局部变量,你可以使用 `nonlocal` 关键字。例如:
```python
def outer():
width = 10
def inner():
nonlocal width
width = 20
inner()
print(width) # 输出 20
outer()
```
在这个例子中,我们在 `inner()` 函数中使用了 `nonlocal` 关键字来告诉 Python 我们要使用外部变量 `width`,而不是定义一个局部变量。
阅读全文