python中的闭包

原创 2012年03月27日 15:22:55

举个例子:

def make_adder(addend):
    def adder(augend):
        return augend + addend
    return adder


make_adder函数里嵌套了一个内层函数adder,这个内层函数就是一个闭包,其实可以也不用管这个“闭包”的概念,先来看下这种模式解决些什么问题,“闭包”只是个名称罢了。

调用make_adder函数:p = make_adder(23),由于内层的函数adder里的逻辑用到了make_adder函数的入参,而这时这个入参addend绑定了值23,由于make_adder函数返回的是函数adder,所以这时的p其实就是内部的addend绑定了23的函数adder;同理可知,q = make_adder(44),这里的q就是内部addend绑定了44的函数adder,p和q这两个adder函数是不相同的,因为内部addend绑定的值不同,只是两个函数的模板相同罢了,这时我们执行p(100)得到结果是123,q(100)得到结果是144。这样做有什么用呢?其实可以这样看:我们可以把p = make_adder(23)和q = make_adder(44)看成是配置过程,23和44是配置信息,p(100)和q(100)根据不同的配置获得不同的结果,这样我们就可以解决开发中“根据配置信息不同获得不同结果”的问题

Python闭包实例closure.py

  • 2017年11月15日 14:27
  • 214B
  • 下载

python变量及其作用域,闭包

http://blog.csdn.net/pipisorry/article/details/42525939建议参考[Python核心编程2ed.pdf: 11.8 变量作用域]Python 标识符...

python 嵌套函数->闭包->装饰器

概述python的终极使用是装饰器,但在使用装饰器前需要掌握闭包,但是掌握闭包之前需要掌握嵌套函数,下面由浅入深来说下他们的关系。嵌套函数很多高级语言都支持函数的嵌套的定义(划重点:是定义,不是调用)...
  • tanyjin
  • tanyjin
  • 2017年11月18日 14:36
  • 260

python进阶学习笔记(二)——闭包、装饰器、偏函数

python中闭包 和装饰器

闭包的概念 形式以及在javascript,python,Ruby等语言中的应用

什么是闭包? 闭包并不是什么新奇的概念,它早在高级语言开始发展的年代就产生了。闭包(Closure)是词法闭包(Lexical Closure)的简称。对闭包的具体定义有很多种说法,这些说法大体可以...

python-闭包概念和append()和extend()的不同

首先看一段代码:def count(): fs = [] for i in range(1, 4): def f(j): def g(): ...
  • CV_YOU
  • CV_YOU
  • 2017年04月28日 11:18
  • 205

Python Enclosing作用域、闭包、装饰器

Enclosing作用域、闭包Jaglawz: 听讲Python一切都是对象,是吗?Pylego: 是的,像函数也是对象。Jaglawz: 那么函数也可以有自己的属性了?Pylego: 当然,像下面这...

Python闭包与装饰器

Python闭包与装饰器 一、装饰器概念       装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器接...

Python学习笔记之函数作为返回值、闭包的解释

函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax ...

【Python基础】--字符串str/序列/全局标志位/全局变量/内嵌函数和闭包

字符串str >>> str1 = 'i love you, wuyq' >>> str1[:5] 'i lov' >>> str1 'i love you, wuyq' >>> dir(str) [...
  • waldmer
  • waldmer
  • 2016年11月15日 08:23
  • 670
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中的闭包
举报原因:
原因补充:

(最多只允许输入30个字)