顾名思义,就是函数内还有函数
#嵌套函数
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