Python编程 闭包

文章详细解释了Python中的闭包现象,通过例子展示了当内部函数引用外部函数的临时变量,并作为外函数返回值时,如何形成闭包。闭包允许内函数在外部函数执行完毕后仍能访问和使用外部的局部变量。
摘要由CSDN通过智能技术生成

  • 作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:b网络豆的主页​​​​​​

目录

 前言

一.闭包

1.什么是闭包

前景引入:

2.闭包的定义需要满足以下三个条件:

 总结:


 前言

本章将会讲解Python编程函数的闭包。


一.闭包

1.什么是闭包

当我们在外部函数中定义了一个内部函数,并且内部函数能够读取到外部函数内的变量,这种函数我们就称为闭包。

前景引入:

def test_one():
    print("---1---")

#test_one()    #函数的调用
t_o = test_one()
print(id(test_one()))    #140726006127832
print(id(t_o))          #t_o变量指向了test_one函数的调用   140726006127832
# t_o()   报错

2.闭包的定义需要满足以下三个条件:

  1. 在一个外函数中定义了一个内函数
  2. 内函数里运用了外函数的临时变量
  3. 并且外函数的返回值是内函数的引用
def test(number):       #number 形参 临时变量
    print("--1--")

    def test_in(number_in):
        print(number_in)
        print("--2--")
        return number_in + number

    print("--3--")
    return test_in

#执行完毕时 结果--1-- --3--  并且函数里面的变量会被释放(number)
res = test(20)     #res = test_in
res1 = res(25)            #test in()
print(res1)        #45 说明在外层函数执行完毕时,number并没有被释放,而是继续给内层函数使用。

 从上自下执行,碰到test(20)执行test里面内容输出--1-- 再向下执行输出--3--,返回test_in检测到了还有内层函数,将test_in返回时将临时变量与内层函数进行了绑定,绑定后继续向下执行返回到函数调用处res ,res相当于test_in ,我们想调用内层函数使用res进行调用执行res1=res(25) 输出了25 输出了--2--,使用到了number,从而证明产生了闭包。


 总结:

  • 闭包它是一种现象
  • 一般情况下,外函数执行完毕时,临时变量会被释放。
  • 但此时,外函数发现自己的临时变量会在将来被使用,
  • 所以外函数结束的时候,在返回内函数引用的同时,将外函数的临时变量与内函数进行绑定。
  • 这也是为什么当外函数结束,但内函数仍然可以使用外函数临时变量的原因。

 创作不易,求关注,点赞,收藏,谢谢~  

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值