一段示例代码(这段代码是错误的):
python
num = 100
def d1():
num += 1
print(num)
d1()
print(num)
执行它会报错UnboundLocalError
,这是因为 d1
中对变量 num
进行了赋值操作,这使得 Python 将 num
视为局部变量。然而,在进行赋值之前,尝试对 num
进行自增操作,此时 num
尚未被赋值
所以需要使用 global
关键字来告诉 Python num
是一个全局变量,因此 num += 1
操作会修改全局变量 num
而不是创建一个新的局部变量
Python 的作用域规则如下:
- 如果在函数内部对一个变量进行赋值操作(例如 num += 1 或 num = 101),Python 会认为这个变量是一个局部变量。
- 如果在函数内部访问一个变量而没有对其进行赋值操作,Python 会先在局部作用域中查找该变量,如果找不到,则会在全局作用域中查找。