闭包

1.闭包=函数+环境变量

def curve_pre():
    a=25                  #环境变量
    def curve(x):         #函数
        return a*x*x
    return curve
a=10
f=curve_pre()
print(f.__closure__)
print(f.__closure__[0].cell_contents)
print(f(2))
def f1():
    a=10    #环境变量
    def f2():
        a=20  
#a此时将被python认为是一个局部变量,不会改变外部变量的值,也不会引用外部环境变量,不是闭包
        print(a)
    print(a)
    f2()
    print(a)
f1()

2.解决问题:旅行者总共走了多少步

origin = 0
def go(step):
    global origin  #声明origin是全局变量
    new_pos=origin+step
    origin=new_pos
    return new_pos

print(go(2))
print(go(3))
origin = 0
def factory(pos):    #pos环境变量  能记忆状态
    def go(step):    #函数
        nonlocal  pos
        new_pos=pos+step
        pos=new_pos
        return new_pos
    return go
tourist=factory(origin)
print(tourist(2))
print(tourist(3))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值