特点:
- 多层函数嵌套
- 往往内部函数用到外部函数的变量值
优点:
有点像类,可是又没有类那么臃肿(有乱七八糟的魔法属性)。闭包精简,既有数据,还有执行这些数据的代码,而且没有其他乱七八糟的东西
示例代码:
def line(k, b):
def create_y(x):
print(k*x+b)
return create_y
line1 = line(1, 2)
line1(0)
line1(1)
line1(2)
讲解:
关键字 nonlocal:
x = 300
def test1():
x = 200
def test2():
nonlocal x # 只想用闭包里的 故用关键字nonlocal,注意和global相区别
print("-----1-----%d" %x)
x = 100
print("-----2----%d"%x)
return test2
t = test1()
t()
# 输出结果:
# -----1-----200
# -----2----100