局部变量和全局变量

函数内部没有global关键字:
①有声明局部变量:用函数内部自己的局部变量
②无声明局部变量:用函数外部的全局变量,虽然无法进行重新赋值,但对于可变类型的数据可进行内部数据的操作

函数内部有global关键字:
global声明全局变量时位于函数最前面

函数内部有nonlocal关键字:
nonlocal指定上一级变量

全局变量用全大写,局部变量用全小写

 1 name = 'chen'
 2 def test():
 3     global name  #指向全局变量
 4     name = 'li'
 5     print(name)
 6 test()
 7 print(name)
 8 # li
 9 # li
10 
11 
12 name  = 'chen'
13 def change():
14     name = 'liu'
15     def change1():
16         nonlocal name   #指定上一级变量
17         name  = 'li'
18         print(name)
19     change1()
20     print(name)
21 change()
22 print(name)
23 # li
24 # li
25 # chen
26 
27 
28 name='alex'
29 def foo():
30     name='lhf'
31     def bar():
32         name='wupeiqi'
33         def tt():
34             print(name)
35         return tt
36     return bar
37 
38 func=foo()  #bar地址作为返回值传给func===>func = bar
39 print(func)
40 func()()    #===>bar()()===>tt地址作为返回值传出来===>tt()==>print(name)
41 # <function foo.<locals>.bar at 0x0000001C74519BF8>
42 # wupeiqi
43 
44 name='alex'
45 def foo():
46     name='lhf'
47     def bar():
48         print(name)
49     return bar
50 
51 func=foo()   #将bar地址作为返回值传给func====>func = bar
52 print(func)
53 func()       #bar()====>print(name)
54 # <function foo.<locals>.bar at 0x0000001C74519B70>
55 # lhf
View Code
原文地址:https://www.cnblogs.com/SakuraYuanYuan/p/10308298.html