函数闭包
2018-06-18 01:31:32来源:未知 阅读 ()
函数闭包
什么是闭包?
- 内部函数对外部函数作用域里对象的引用(非全局变量),则称内部函数为闭包
- 一个闭包就是你调用了外部函数,外部函数返回内部函数,此时的内部函数就叫做闭包函数
- 闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例
闭包简单示例:
1
|
def wai():
|
通过这个例子大家可以看到,在外部函数中,本应该在wai函数执行完死掉的变量a,由于此时有了 内部函数的引用,从而使得这个变量并不会死去,而是类似于继承一样,通过nei函数又存活了下来
接着让我们愉快的看下一个例子,继续理解闭包
1
|
num = 1 #全局变量num
|
三次闭包函数的执行结果,我们来看一下吧
1
|
2
|
分析一下,这里出现的结果
首先三次值都是在全局变量num的基础上做累加 a 的操作
说明在闭包函数对象res存活期间,a变量将会一直存活
最后我们以将一个可变数据对象作为闭包引用的变量为例
1
|
def func(obj): #接收可变数据对象作为参数
|
执行的结果
1
|
[1, 2, 3, 4, 5]
|
闭包思考:
- 闭包私有化了变量,实现了类似于面向对象中实例的功能
- 由于闭包引用了外部函数的局部变量,则外部函数中的局部变量没有及时释放,消耗内存
- 在python中,使用闭包的另一个场景就是装饰器,也叫语法糖 @
实现闭包:
- 函数嵌套
- 内部函数对外部函数作用域里对象的引用
- 外部函数返回内部函数对象
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- fetchone函数和fetchall函数返回值的区别 2019-08-13
- Python之装饰器笔记 2019-08-13
- Python学习日记(九) 装饰器函数 2019-08-13
- python之函数、面向对象 2019-08-13
- python3基础之“函数(2)” 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash