顾名思义,就是函数内还有函数
#嵌套函数 def func1(): print('func1') def func2(): print('func2') func1()
结果:
func1
为什么函数func2没有被执行?
任意一个函数定义完成之后,如果没有人通过名字调用它,就永远不会执行
那如何调用func2?
def func1(): print('func1') def func2(): print('func2') func2() func1()
结果:
func1
func2
回顾全局变量和局部变量:
age = 18 #曾祖父 def func1(): #爷爷 age = 20 print(age) def func2(): #爸爸 age = 25 print(age) def func3(): #儿子 print(age) func3() func2() func1()
结果:
20 25 25
函数引用变量的时候是从该函数内部一层一层的向外找
还有一点值得注意的是,要遵循代码的执行顺序,想要被调用的变量不能在被执行函数的下面
age = 18 #正确: def func1(): # age = 20 放在上面 def func2(): print(age) age = 20 #放在下面,其实都是放在func2的上面 func2() func1() #错误: def func1(): def func2(): print(age) func2() age = 20 #不能放在引用该变量的函数下 func1()
结果:
#正确: 20 #错误: NameError: free variable 'age' referenced before assignment in enclosing scope