# python 中的闭包

n = 10 #定义全局作用域变量


def fn(): #形成闭包
    n = 100 #定义局部变量n

    def inner():
        nonlocal n
        n += 1 #这里定义操作相同变量n无法调用上层作用中的变量,如果只读不写则可以正常访问
               # python3 中新增nonlocal 关键字可以调用上层作用域中的变量
        print(n)

    inner()
    return inner #返回内嵌函数的地址,从而形成闭包
    #形成闭包的条件
    #1、必须要有一个内嵌函数
    #2、内嵌函数中要对自由变量的引用
    #3、外部函数必须返回内嵌函数


t = fn()
t()
t()
print(n)

 

相关文章:

  • 2021-10-01
  • 2022-12-23
  • 2022-12-23
  • 2021-04-30
  • 2021-06-24
  • 2022-12-23
  • 2021-05-12
  • 2021-09-06
猜你喜欢
  • 2021-06-30
  • 2021-08-23
  • 2022-12-23
  • 2021-12-01
  • 2021-08-30
  • 2022-12-23
  • 2021-07-06
相关资源
相似解决方案