全局变量global
局部变量只能在函数内进行更改,不会影响函数以外的值,即不可全局赋值
global全局变量在函数内发生变化后会影响全局变量值,即可全局赋值
x=10
def local_x():
x=11
return '变量x是',x
print(local_x(),'全局变量x还是',x)
('变量x是', 11) 全局变量x还是 10
def global_x():
global x
x=11
return '变量x是',x
print(global_x(),'全局变量x变成是',x)
('变量x是', 11) 全局变量x变成是 11
但是当变量可变类型如列表时,即使不声明是global变量也一样可以通过列表的方法改变列表
x=[1,2,3]
def lo():
x.append(4)
return x
print(lo(),x)
[1, 2, 3, 4] [1, 2, 3, 4]
nonlocal的用法
def fun1():
x=2
def fun2():
x*=2
return x
return fun2()
fun1()
会报错