python闭包的应用场景_Python闭包的应用

Python

闭包的应用

闭包(

Closure

)是词法闭包(

Lexical Closure

)的简称。对闭包的具体定义有很多

种说法,这些说法大体可以分为两类:

一种说法认为闭包是符合一定条件的函数,比如参考资源中这样定义闭包:闭包是在

其词法上下文中引用了自由变量的函数。

另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

比如参考资源

中就有这样的的定义:

在实现深约束时,

需要创建一个能显式表示引用环境的东西,

并将它

与相关的子程序捆绑在一起,这样捆绑起来的整体被称为闭包。

这两种定义在某种意义上是对立的,一个认为闭包是函数,另一个认为闭包是函数和

引用环境组成的整体。

虽然有些咬文嚼字,

但可以肯定第二种说法更确切。

闭包只是在形式

和表现上像函数,

但实际上不是函数。

函数是一些可执行的代码,

这些代码在函数被定义后

就确定了,不会在执行时发生变化,所以一个函数只有一个实例。

闭包在运行时可以有多个实例,

不同的引用环境和相同的函数组合可以产生不同的实

例。

所谓引用环境是指在程序执行中的某个点所有处于活跃状态的约束所组成的集合。

其中

的约束是指一个变量的名字和其所代表的对象之间的联系。

那么为什么要把引用环境与函数

组合起来呢?这主要是因为在支持嵌套作用域的语言中,

有时不能简单直接地确定函数的引

用环境。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值