不是局部变量不可修改全局变量吗?怎么还可以运行呢?
答:因为point += 2相当于 point = point + 2,这个point接收的参数是【位置参数】point
所以相当于只是在【局部作用域】写了一个赋值语句。
def sum(point):
point += 2 # 局部变量
return point
point = 10 # 全局变量
n = sum(5)
print(n)
这样子是不行的:
point = 4
def sum(name):
point = point + 2
return point
point = 10
n = sum(10)
print(n)
出现报错:UnboundLocalError: local variable ‘point’ referenced before assignment。翻译一下就是:局部变量point在赋值之前被引用。也就是说:python把point = point + 2中的point当成了局部变量使用,然而他并没有被赋值,因此出现报错,为什么局部变量不使用全局变量的point呢?这是因为在同一行赋值语句里,局部变量不能引用全局变量,会被python误解为修改全局变量值。