python闭包函数

news/2025/1/11 9:59:51/

一、闭包函数的概念

闭包 = 一个函数 + 外部封闭的作用域
闭包函数的特征:

  • 函数中嵌套一个函数
  • 外层函数rertun返回 内层函数
  • 内层函数有引用 外部作用域 的非全局变量
def funcB1():x = 100def funcB2():c = x * 2print(c)return funcB2# 调用闭包函数 返回的结果就是一个闭包
# 闭包 =  一个函数 +  外部封闭作用域
# 封闭作用域的值在外面是没有办法进行修改的
res = funcB1()print(res)
res()# 运行结果
# <function funcB1.<locals>.funcB2 at 0x000001B8B48BC310>
# 200

因为作用域的原因,在函数外部就无法拿到函数中的变量和内部函数。通常我们需要使用函数中的变量时,才去将变量返回的办法。同理,在使用内部函数时,我们也可以将函数名作为返回值返回。 这是闭包最常用的方式。

二、如何判断是否是闭包函数

函数名__closure__ 在函数是闭包函数时,返回一个cell元素;不是闭包时,返回None。
输出cell:

def funcB1():x = 100def funcB2():c = x * 2print(c)print(funcB2.__closure__)return funcB2# 调用闭包函数 返回的结果就是一个闭包
# 闭包 =  一个函数 +  外部封闭作用域
# 封闭作用域的值在外面是没有办法进行修改的
res = funcB1()
res()# (<cell at 0x0000027678A1C640: function object at 0x0000027678A0C310>, <cell at 0x0000027678A1CB50: int object at 0x00000276782655D0>)

输出None:

name = 'python'
def func():def inner():print(name)print(inner.__closure__)  # Nonereturn innerf = func()
f()# None
# python

http://www.ppmy.cn/news/335885.html

相关文章

学习积累加油鼓劲

【如何越来越优秀】 1.你不会的东西&#xff0c;觉得难的东西&#xff0c;一定不要躲&#xff0c;先搞明白&#xff0c;后精湛&#xff0c;你就比别人优秀了&#xff0c;因为大部分人都不舍得花力气去钻研&#xff0c;自动淘汰&#xff0c;所以你执着的努力&#xff0c;就占了…

杰森·斯坦森 Jason Michael Statham 2000-2012年 27部合集 435G

杰森斯坦森 Jason Michael Statham 2000-2012年 27部合集 435G 下载地址1&#xff1a; 杰森斯坦森 Jason Michael Statham 2000-2012年 27部合集 435G.rar http://www.400gb.com/file/58749145 下载地址2&#xff1a;http://www.400gb.com/u/1899168/3196560 更多资源下载&…

python匿名函数lambda

一、匿名函数的介绍和使用 在Python中&#xff0c;不通过def来声明函数名字&#xff0c;而是通过lambda关键字来定义的函数称为匿名函数 1.需要将一个函数对象作为参数来传递时&#xff0c;可以直接定义一个lambda函数&#xff08;作为函数的参数或返回值&#xff09; 2.要处…

python什么是鸭子类型

一、鸭子类型 鸭子类型&#xff08;英语&#xff1a;duck typing&#xff09;是动态类型的一种风格。在这种风格中&#xff0c;一个对象有效的语义&#xff0c;不是由继承自特定的类或实现特定的接口&#xff0c;而是由当前方法和属性的集合决定 “当看到一只鸟走起来像鸭子、…

杰森斯坦森是机器人_杰森·斯坦森站台的品牌 赛麟究竟是什么

作者&#xff1a; johnny 2019-07-22/17:58 驱动中国2019年7月22日消息 近日&#xff0c;赛麟(SALEEN)在北京国家体育场鸟巢举办了一个发布会&#xff0c;国际影星杰森斯坦森到场站台&#xff0c;很多人就有疑问了&#xff0c;赛麟是个什么牌子&#xff0c;没听说过啊&#x…

python列表推导式练习

python列表推导式练习总结&#xff1a; 问题一 如何快速生成一个列表 [“data0”,“data1”,“data2”,“data3”,…,“data99”,] 问题二 如何快速生成一个列表[“data0”,“gy1”,“data2”,“gy3”,…,“data98”,“gy99”] 列表以下方法总结如代码&#xff1a; "&quo…

python常用的内置函数filter、map、eval、exec、all、all

python常用的内置函数 目录 一、filter 过滤函数二、map函数三、eval函数四、exec函数五、all函数六、 any函数 一、filter 过滤函数 filter()函数用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回符合条件的元素组成新列表 # 实例1 取出列表中大于10的数 l…

测试开发面试题总结

测试开发面试题 1. 通过列表推导式完成下面数据类型转换。将 ["{‘a’:11,‘b’:2}", “[11,22,33,44]”] 转换为以下格式&#xff1a; li1 [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]2. Names[python,java,php,c,c,django,unittest,pytest,pymysql],请通过列表推导…