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 ######作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变######