1.闭包:闭包是在嵌套函数中,内函数使用外函数的局部变量,并且返回了内函数。
2.特点:延长了局部变量的生命周期,持续到脚本执行结束。
3.意义:保护了内部变量,防止像使用全局变量(global)的时候被篡改。
nonlocal:是一个关键字用于访问封闭函数作用域中的变量。当内层函数在外层函数中被定义时,它们可以访问该外层函数的变量,这些变量被称为封闭函数变量。
代码:
""" coding:utf-8 @Software:PyCharm @Time:2023/4/26 11:11 @author:Panda """ # 闭包 def hobby(): # 外函数 lin = 'xxx' # 局部变量 def hobbye(): print('测试闭包函数{}'.format(lin)) return hobbye() hobby() # Output:测试闭包函数xxx # 延长num的周期,在闭包返回的时候注意“return inner”,如果两个函数都有传参 # 注意需要传出函数名,在最外面进行调用函数,否则无法调用到内部函数 def outer(num): def inner(val): print(num + val) return inner func = outer(10) func(15) # Output:25 def outer(): count = 0 def inner(): nonlocal count count += 1 print(count) return inner func = outer() func() func() count = 20 # 因为有nonlocal的存在 不是全局变量 所以无法被篡改 func() func() func() # Output:1 2 3 4 5
标签:闭包,count,函数,Python,inner,func,def From: https://www.cnblogs.com/future-panda/p/17355073.html