1 分钟告诉你什么叫闭包~


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)根据不同的配置获得不同的结果,这样我们就可以解决开发中“根据配置信息不同获得不同结果”的问题.

lol,亲你是不是花了不止一分钟,呵呵O(∩_∩)O~

copy from : http://blog.csdn.net/wyabc1986/article/details/7399104?reload

时间: 2025-01-06 14:20:38

1 分钟告诉你什么叫闭包~的相关文章

如何对比Python和Java,只需三分钟告诉你!

Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天3分钟带你透彻了解. 1.运行速度 java是静态语言静态编译的,速度上要比Python快的很多,而Python动态类型语言,一边执行一边编译,速度要上慢一些. 2.对Legacy代码的支持 对于legacy代码的支持,由于Java大量的用于电商,互联网后端,银行等大型系统,所以对于legacy的代码的数量要远大

五分钟带你学会 JavaScript 闭包

闭包,是javascript中独有的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟学会闭包! 1 闭包–爱的初体验 在接触一个新技术的时候,我首先会做的一件事就是:找它的demo code.对于码农们来说,代码有时候比自然语言更能理解一个事物. 其实,闭包无处不在,比如:jQuery.zepto的主要代码都包含在一个大的闭包中,所以下面我先写一个最简单最原始的

三分钟带你学会 JavaScript 闭包

闭包,是javascript中独有的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟学会闭包! 1 闭包–爱的初体验 在接触一个新技术的时候,我首先会做的一件事就是:找它的demo code.对于码农们来说,代码有时候比自然语言更能理解一个事物. 其实,闭包无处不在,比如:jQuery.zepto的主要代码都包含在一个大的闭包中,所以下面我先写一个最简单最原始的

一分钟告诉你究竟DevOps是什么鬼?

历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员是神秘且深奥的.我们没法揣摩他们的想法,我们所能做的只是描述一下他们的表象. 清醒的像一只游过水面的狐狸 警惕的像一位战场上的将军 友善的像一位招待客人的女主人 单纯的像一块未经雕琢的木头 深邃的像一潭幽深洞穴中漆黑的池水 程序员开发了机器语言,机器语言又产生了汇编语言,汇编语言产生了编译器,如今的

一分钟告诉你什么是OPC DA质量代码

[关于TOP Server OPC Server试用版可登录慧都网该产品下载页进行下载] OPC DA(OPC实时数据访问规范)定义了包括数据值,更新时间与数据品质信息的相关标准.这个定义相信大家都很熟悉,但是关于OPC DA质量代码,肯定有部分朋友不是特别清楚,所以小编今天就来讲讲关于OPC DA质量代码的具体含义. OPC质量代码由16位组成. 高8位可供供应商特定使用,并且在不使用时应该为全0. 低8位分为三个部分: 前两位可以传递Good(好),Bad(坏)或Uncertain(不确定)

3分钟告诉你,如何选择企业管理软件!

在IT技术及互联网日新月异的今天,企业管理软件对于所有企业的经营管理者及大多数员工来说,都不会陌生.为保证企业的健康稳定运行,适应持续扩大的经营生产规模,提高管理水平,提升经营效率自然成为老板最急迫的期望和要求,企业管理软件更是为现代企业的经营管理者所青睐.企业管理软件是以企业管理需求为基础,以IT技术为支撑,为企业提供数据信息及智能化应用的管理工具和办法.但面对市场上众多的管理软件,企业该如何选择却是一件很头疼的事情. 集合多年CRM管理软件的行业经验,我们来帮助大家理清下思路,如何去正确的选

闭包问题

闭包问题详解 一.什么是闭包?“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述的太学术.我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的.看下面这段代码: function a(){var i=0;function b(){alert(++i);}return b;}var c = a();c();

闭包问题详解

一.什么是闭包?“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述的太学术.我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的.看下面这段代码: function a(){var i=0;function b(){alert(++i);}return b;}var c = a();c();这段代码有两个

《一分钟经理人》晨读笔记

① 『一分钟目标』 只有知道目标是什么,大家才能确认自己做得怎么样.人没有目标就像是往没有篮筐的架子上投篮,或是玩一局没有大boss的游戏,失去难度便会了无趣味. 如果你是管理者,那就一定要预先和员工一起明确目标:如果你是员工,而且对目标不够清晰的话,就要主动地请老板提出建议.一分钟目标,能让大家在最重要的工作目标上达成一致,从而水到渠成地高效完成后续工作. 它的具体做法是这样的:将目标写在一页纸上,用简洁的语言表述,并且明确衡量标准和完成期限.这些内容应该用一两段话就说清楚,读一遍大概只花一分