1 ######作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变######
2 # 程序一
3 name = "Newmet"
4 def foo():
5 name = "Newmet1"
6 def bar():
7 print(name)
8 return bar
9 a = foo() # 返回值:bar 是函数bar的内存地址
10 a()
11
12 # 程序二
13 name = "Newmet"
14 def foo():
15 name = "Newmet1"
16 def bar():
17 name = "Newmet2"
18 def ff():
19 print(name)
20 return ff
21 return bar
22 # a = foo() # 返回值:bar 是函数bar的内存地址
23 # b = a() # 调用函数:bar,返回值:ff 是函数ff的内存地址
24 # b() # 调用函数:ff
25 # 上面三行简写为:
26 foo()()()
27
28 # foo() 调用foo函数,返回值:bar(是该函数的内存地址)
29 # foo()() 调用bar函数,返回值:ff(是该函数的内存地址)
30 # foo()()() 调用ff函数,结果:Newmet2
31 # foo()()() 是根据每层返回给的内存地址,一层层的再调用下去的。
32
33 ######作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变######