函数的嵌套和作用域

函数的嵌套定义

①内部函数可以使用外部函数的变量

作用域链

在内部函数使用变量时,是从小局部到大局部到全局到内置名字的过程中一级一级网上找,找到最近的一个就使用

nonlocal a 声明一个上层局部变量,往上走一级离得最近并且有a

1、对全局无效

2、对局部的最近的一层产生影响

闭包嵌套函数,内部函数调用外部函数的变量

不调用不是闭包是嵌套

def outer()

  a = 1

  def inner():

    print(a)

outer()

闭包的应用

可以保护变量,保护上一级局部变量中a = 1 生存周期

def outer()

  a= 1

  def inner()

    return innner

  print(a)

inn = outer()    #用imn接收return inner

inn()    #直接调用函数,省去a重复创造并使用,节省内存空间

原文地址:https://www.cnblogs.com/Ebola-/p/8127939.html