闭包 学习讨论

def line_conf(a, b):

    i = a * b

    def line(x):

        i = i + x

        return i * x + b

    return line

line1 = line_conf(4, 5)

print line1(5)

在python2.x中报UnboundLocalError错误,原因应该是变量i是函数line_conf()的局部变量,函数调用结束之后也就清除了这个变量,而line1()中需要依赖变量i,才会报这个错误

时间: 2024-08-29 03:41:37

闭包 学习讨论的相关文章

JavaScript闭包学习笔记

原文:JavaScript闭包学习笔记 闭包(closure)是JavaScript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于JavaScript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解JavaScript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. JavaScript语言的特殊之处,就在于函数内部可以直接读取全局变量. 1 var n=999; 2 3 function f1() { 4 alert

关于Android 动画技术学习讨论。

关于android动画主要有三种:补间动画,帧动画和属性动画(android3.0以后引入)详细了解动画的基本知识,可详细阅读该博文http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html .博文主要对android动画在项目中开发问题及解决办法列举如下: 1.属性动画是在android3.0后引入的.据工作中项目经验,属性动画效率貌似高于补间动画和帧动画.建议使用属性动画在android3.0以上设备,属性动画基本可以实

JavaScript-this与闭包学习记录

this var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()()); //返回"The Window" ,函数体重return 的外部函数,上下文在window下. 理解this四中用法

JS - 闭包学习

刚学习了闭包,主要是从廖雪峰的官方网站和阮一峰的网络日志中学的.总结如下: JS的闭包,就是一个函数A里面有一个内嵌的函数B,A 返回的是B .B可以访问A的参数和局部变量,当A返回B时,A的参数和局部变量就保存在B中,这就是闭包.B在返回时并没有立刻执行,z直到调用时候B()才执行. 在A里定义局部变量,一定要用到var 来定义,否则该变量就默认为全局变量了. 闭包的用途 闭包可以用在许多地方.它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中

JavaScript闭包学习笔记(ife2015spring)

阮大的文章让我获益良多.学习Javascript闭包(Closure) 问题: 话说在做task2小练习4轮播图的时候遇到了一个问题.本来是想按哪个按钮,就播放到对应图片.但实际上最后出来的值都是5. 比如下面这个简化的例子. for(var i=1;i<5;i++){ e[i].onclick=function(){ console.log(i); }; } 本以为按第一个弹出一,按第二个弹出2.但实际上都弹出的是5.黑人问号脸? 这就是js坑的地方了.因为for循环结束以后,它的i并没有马上

Javascript闭包学习(Closure)

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外

trait,interface,abstract,PHP7新特性以及PHP闭包学习

1月8日trait 自PHP5.4.0起,PHP实现了一种代码复用的方法 称为traittrait 是为 PHP这类单继承语言准备的一种代码复用机制 .trait 为了减少单继承语言的限制,使开发者可以在不同层级中独立的调用 trait中的 方法 trait和类的组合使用,避免了一般类的多继承和混入类(Mixin)相关的典型问题. trait 类似于一个类trait 不能被实例化 使用方法 其他类中use,既可单独调用例子:trait say{public function say_word()

javascript 闭包学习

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function

JavaScript闭包 学习(Closure)

一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,