全局变量 与 局部变量 与 闭包变量(介于两者之间的变量)
global关键字:局部范围内更改全局变量(函数默认只能读取全局变量,不能修改)
nonlocal关键字:嵌套函数中修改闭包变量(外层函数定义的变量相当于其语句块内的全局变量)
1 i=1
2 j=2
3 print('全局变量:i=',i,'j=',j)
4
5 def fun():
6 global i,j #要想修改全局变量,需要先使用global关键字对其进行事先声明
7 i=2
8 j=3
9
10 fun()
11 print('调用fun,修改后的全局变量:i=',i,',j=',j)
12
13
14 def fun1():
15 i=0
16 print('i='+str(i)+',在fun1中,是局部变量')
17
18 fun1()
19 print('i='+str(i)+',在函数外部,是全局变量')
20
21
22 def fun2():
23 k=2 #k为闭包变量(Closue),范围介于全局变量和局部变量之间,需要修改时使用nonlocal关键字先声明后修改
24 def fun3():
25 nonlocal k
26 k = 3
27 a=k+i
28 return a
29 print('fun2中,闭包变量k='+str(k))
30 return fun3()
31
32 print(fun2())