函数的嵌套
- 一个函数作为另一个函数的返回值
- 一个函数作为另一个函数的参数
- 在函数内部再定义一个函数
# 一个函数作为另一个函数的返回值
def foo():
print(\'foo\')
return \'foo\'
def zzw():
print(\'zzw\',end = \' \')
return foo()
zzw() # zzw foo
def foo():
print(\'foo\')
return \'foo\'
def zzw():
print(\'zzw\',end = \' \')
return foo
zzw()() # zzw foo
# 利用return方法可以将函数作为另一个函数的返回值
# 在函数内部再定义一个函数
def zzw():
m = 100
def zha():
n = 90
print(\'我是zha\')
print(\'我是zzw\')
zzw() # 我是zzw
zha() # NameError: name \'zha\' is not defined
# 对于函数内部定义的函数,如果函数内部没有调用语法,那么就不会生效
# 在函数外部调用函数内定义的函数会报错,因为函数内部和外部完全隔离,对于函数内的函数只能在函数内调用
- 函数的嵌套依然遵循函数的规则,即函数分隔作用域
- 对于一层函数来说,函数内的变量为局部变量,在外部无法访问。函数外的变量为全局变量,在内部可以调用无法修改
- 对于多层函数嵌套,依然遵循这个规则,对于当前函数来说,它外层的函数中的变量就相当于它的全局变量,而他内部本身的变量就相当于局部变量,无法被外层函数调用
def zzw():
m = 100
def zha(): # zha函数是定义在zzw函数内部的一个函数,无法在外部直接使用
n = 90
print(\'我是zha\')
print(\'我是zzw\')
return \'hello\'