python 闭包
2012-07-21 15:36
267 查看
闭包:
对闭包的具体定义有很多种说法,这些说法大体可以分为两类:
◆一种说法认为闭包是符合一定条件的函数,比如参考资源中这样定义闭包:闭包是在其词法上下文中引用了自由变量的函数。
◆另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。比如参考资源中就有这样的的定义:在实现深约束时,需要创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体被称为闭包。
python中闭包 表示内层函数 由一个变量指代 而这个变量对于外层包含的函数而言是本地变量 看一个例子:
执行 p = make_adder(23) 将产生内层函数adder() 的一个闭包 这个闭包在内部引用了名字 addend 而 addend = 23 可以理解为 p = augend + 23 只不过p是一个函数 可以传递一个参数 再次执行类似于
再比如
首先
对闭包的具体定义有很多种说法,这些说法大体可以分为两类:
◆一种说法认为闭包是符合一定条件的函数,比如参考资源中这样定义闭包:闭包是在其词法上下文中引用了自由变量的函数。
◆另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。比如参考资源中就有这样的的定义:在实现深约束时,需要创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体被称为闭包。
python中闭包 表示内层函数 由一个变量指代 而这个变量对于外层包含的函数而言是本地变量 看一个例子:
def make_adder(addend): def adder(augend): return augend + addend return adder
执行 p = make_adder(23) 将产生内层函数adder() 的一个闭包 这个闭包在内部引用了名字 addend 而 addend = 23 可以理解为 p = augend + 23 只不过p是一个函数 可以传递一个参数 再次执行类似于
print p(100) #将得到结果 123
再比如
import string def translator(frm='',to='',delete='',keep=None): if len(to) == 1: to = to * len(frm) trans = string.maketrans(frm,to) if keep is not None: allchars = string.maketrans('','') delete = allchars.translate(allchars,keep.translate(allchars,delete)) #keep.translate(allchars,delete) 表示去掉keep和deleted中共有的字符 def translate(s): return s.translate(trans,delete) return translate
首先
digits_only = translator(keep=string.digits)
digits_only = translate(s)
# s.translate(trans,delete) # delete 表示除数字外的所有字符 digits_only('12345,abcd') = translate('12345,abcd') 结果为',abcd'
相关文章推荐
- 初学python闭包时的疑问
- 【Python笔记】Python的几个高级语法概念浅析:lambda表达式 && 闭包 && 装饰器
- [Python 实战] - No.9 Python闭包和装饰器
- python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。
- python的闭包,装饰器,@
- 浅显理解 Python 闭包
- Python中有关函数作为一个函数的返回值(闭包)
- Python 闭包
- python中的闭包
- Python闭包 变量问题
- Python闭包与装饰器总结
- Python的闭包和装饰器
- python闭包的注意点
- python中的闭包问题
- 深入学习python(三) 闭包(Decorator)与装饰器(Closure)
- Python深入04 闭包
- 草根学Python(十五) 闭包(解决一个需求了解闭包流程)
- perl和python中的闭包
- python中的闭包,函数
- python 闭包