闭包(含义、作用以及注意之处)

  • 闭包

    1. 什么是闭包:在一个内部函数中,对外部函数作用域的变量进行引用(并且一般外部函数的返回值是内部函数),那么内部函数被认为是闭包

    2. 闭包的作用

      1. 使用外部函数内的变量

      2. 让变量的值始终保存在内存中

        ```一个棋盘,左上角的是原点origin[00],一个函数来控制棋子的运动,接受两个参数方向(direction)和步长(step),棋子的每次的起点是上次运动结束的终点```
        def create(pos = origin):
            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()
        print(player([0,1]),10) #[0,10]
        print(player([2,3]),10) #[20,40]
        

        函数go的局部变量pos一直储存在内存中,并没有随着go的调用结束而被自动消除,为什么呢?

        create是go的父函数,go被赋给了一个全局变量,这导致go一直存在与内存中,create依赖于go,因此也存在于内存中,包括它的局部变量 pos。

    3. 使用闭包需要注意的地方

      闭包会使函数中的变量都保存在内存中,内存消耗很大,所以使用闭包需要谨慎使用,解决方式是,在退出函数之前,将不使用的局部变量删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值