ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

06.python闭包

2022-08-27 00:31:18  阅读:213  来源: 互联网

标签:闭包 box 06 函数 python soria func data out


python闭包

  • 什么样的函数是 闭包函数 ?

    满足以下条件:
    闭:外层函数嵌套了一个内层函数。
    包:内层函数调用外层函数命名空间内的名字。

    举例如下:

    def out_func(): # 外层函数
        data = 'soria' 
        def in_func():  # 内层函数
            print(data) # 内层函数调用外层函数命名空间内的变量
        return in_func
    box = out_func()
    box()
    

    执行顺序是:

    1.默认顺序从上往下执行

    2.遇到"="优先执行右边的out_fun()

    3.执行函数out_func(),在其命名空间内,定义data,定义函数in_func(),return返回in_func

    4.box接受in_func这个函数对象

    5.box()相当于in_func()

    6.执行in_func(),但是发现in_func()的命名空间没有data

    7.去外层函数out_func的命名空间取data

    8.输出'soria'

  • 闭包函数 使用形参 给内层函数 传参

    def out_func(data): # 外层函数
        def in_func():  # 内层函数
            print(data) 
        return in_func
    box = out_func('soria') # 形参data与'soria'临时绑定
    box()
    box = out_func('jason') # 形参data与'jason'临时绑定
    box()
    

    在传入'数据'这个值时,相当于将形参与"数据"这个值临时绑定。

    相当于在out_func函数体内加入了一行代码:data = 'soria'

    当内层函数in_func找不到data这个值时,依然会去外层函数寻找data,

    此时就找到了形参绑定的值:'soria'。

标签:闭包,box,06,函数,python,soria,func,data,out
来源: https://www.cnblogs.com/passion2021/p/16629643.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有