闭包
-
闭包: 如果在一个内部函数里,对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包
-
自由变量; 定义在外部函数内但由内部函数引用或使用的变量称为自由变量
-
一个简单的例子:
- counter() 做的唯一一件事就是接受一个初始化的值开始计数,并将该值赋值给列表 count 唯一一个成员。然后定义一个 inner() 的内部函数。
- 通过在内部使用变量 count,我们创建了一个闭包,因为他现在懈怠了整个 counter() 作用域。inner() 增加了了正在运行的 count 然后返回它
- 如果调用多次 a() 函数,输出结果如下
def counter(start_at=0):
count = [start_at]
def inner():
count[0] += 1
return count[0]
return count
a = counter(10)
print(a())
print(a())
print(a())
# ---------输出结果----------
# 11
# 12
# 13