python 闭包
参考
Python closures tutorial - using closure functions in Python
👍A Dive Into Python Closures and Decorators - Part 1 | Codementor
引入
在 Python 中函数是和其他变量一样平等的一等公民。Functions can be assigned to variables, stored in collections, created and deleted dynamically, or passed as arguments.
嵌套函数,也叫内函数。闭包是一个嵌套函数,它可以从已完成执行的封闭函数中访问自由变量。
Python 闭包的特点:
- 嵌套函数;
- 可以使用范围外的自由变量(包括外函数之外的全局变量);
- 可以从封闭函数处被返回;
闭包的好处:
- 避免过多地使用全局变量;
- 隐藏数据;
如果想在嵌套函数中改变变量的数值,使用nolocal
例子
def make_counter():
count = 0
def inner():
nonlocal count
#这样 count就会改变;
count += 1
return count
return inner
counter = make_counter()
c = counter()
print(c)
#--》 1
c = counter()
print(c)
#--》 2
c = counter()
print(c)
#--》 3
如果不用nolocal
我们也可以使用一些可变类型来进行存储,比如列表。