一、闭包
- 定义:
闭包是函数式编程的一个重要的语法结构,函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability)。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。 - 小demo
1.内部直接调用
def demo1(name):
tid = 100
def func1(sex, birth, age):
sex += 1
birth += 1
age += 1
print(name, sex, birth, age, tid)
func1(10, 20, 30) # 在内部就直接调用“内部函数”
demo1('I am tester!')
2.返回函数名称
def demo2(name):
tid = 100
def func2(sex, birth, age):
sex += 1
birth += 1
age += 1
print(name, sex, birth, age, tid)
return func2 # 调用包装器
a = demo2('I am tester!')
a(10, 20, 30)
3.“闭包”的作用——保存函数的状态信息,使函数的局部变量信息依然可以保存下来
假如坦克大战中,模拟某个坦克的坐标
# 原始坐标
origin = [0,0]
def create(pos):
“”“
direction:方向
step:步数
”“”
def go(direction, step):
new_x = pos[0] + direction[0] * step
new_y = pos[1] + direction[1] * step
pos[0] = new_x
pos[1] = new_y
return pos
return go
player = create(origin)
print(player([1, 0], 10))
print(player([1, 0], 10))
print(player([1, 1], 10))