Python 2.x闭包(enclosure)中的变量访问&修改

http://stackoverflow.com/questions/3190706/nonlocal-keyword-in-python-2-x

---answer----

Python can read nonlocal variables in 2.x, just not change them. This is annoying, but you can work around it. Just declare a dictionary, and store your variables as elements therein

python2.x天然支持nolocal类变量访问,只要不改变他们的“值“就好了。因此用dict/tuple就可以绕过。

demo如下:

>>> def make_sequence():
...     data={‘sequence‘:0}
...     def handler(result):
...             data[‘sequence‘]+=1
...             print ‘[%d] Got: %s‘%(data[‘sequence‘], str(result))
...     return handler
时间: 2024-07-28 13:54:00

Python 2.x闭包(enclosure)中的变量访问&修改的相关文章

python 保存ipython的内存中的变量以便下次启动时使用

保存 from save_ipython_variables import load_all_variables, save_variable save_variable('pa_patmas', pa_patmas) save_variable('dhc_workload', dhc_workload) #put it into pickle for further use 读取 load_all_variables()

数字图像处理之python篇四:图像中的像素访问

前面的一些例子中,我们都是利用Image.open()来打开一幅图像,然后直接对这个PIL对象进行操作.如果只是简单的操作还可以,但是如果操作稍微复杂一些,就比较吃力了.因此,通常我们加载完图片后,都是把图片转换成矩阵来进行更加复杂的操作. python中利用numpy库和scipy库来进行各种数据操作和科学计算.我们可以通过pip来直接安装这两个库 pip install numpy pip install scipy 以后,只要是在python中进行数字图像处理,我们都需要导入这些包: fr

Java 中 父类变量访问子类方法 需要使用 类型转换 (instenceof)关键字 /类型判断/

通过数组元素访问方法的时候只能访问在 Animal中定义的方法,对 于 Tiger类和  Fish中定义的方法时却不能调用,例如语句  animal[2].swim();就是不正确的.当 需要访问这些方法时需要用到类型转换,演示程序如下. 1 public class DynamicMethodDemo2{ 2 public static void main(String args[ ]){ 3 Animal [ ]animal=new Animal[3]; 4 animal[0]=new An

python中的变量和数据类型

一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可以使用关键字, 举例:a,a1,a_1 三.变量的赋值: 1. Python中的变量不需要声明,变量的赋值就是变量声明和 定义的过程: 2. 每个变量在使用前都必须赋值,变量赋值以后该变量才会 被创建: 3. 等号(=)用来给变量赋值,等号(=)运算符左边是一个 变量名,等号(=)运算符右边是存储在

谈谈闭包中的 - 变量

  前面几篇文章中提到过,作用域链以及闭包的概念,这里就不一一重复了,   作用域链的这种配置机制引出了一个值得注意副作用,既闭包只能取得包含函数中任何变量的最后一个值.别忘了闭包所保存的是整个变量对象,而不是某个特殊的变量.         function createFunctions(){             var result = new Array();             for(var i=0;i<10;i++){                 result[i] =

Python中的变量

1.在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文.数字和下划线(_)的组合, 且不能用数字开头,比如:a = 1(变量a是一个整数).t_007 = 'T007'(变量t_007是一个字符串). 2.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且 可以是不同类型的变量,例如: a = 123              # a是整数 print a a = 'imooc'       # 变为了字符串 print a 3.Py

python 中的变量

1 变量的定义 变量即variable Python 中的变量赋值不需要类型声明. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值.例如: 注意:变量名必须是字母,数字或下划线组成,但是不能以数字开头. 2 变量名的约束 使用一个变量前一定要先定义! 注意:y直接回车,就是一种使用,即打印y的值. 3标准数据类型 在内存中

Python中的变量引用对象需注意的几点

Python中的变量引用对象需注意的几点 分类:Python (55)  (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须赋值.赋值后的变量指向响应的对象,拥有该对象的空间.类型属于对象,但是不是变量. [python] view plain copy a = 3 a = "science" 上述代码说明数值3和字符串"science"分别是两种对象,初始变量a赋值对象3被创建,变量a指向

python中如何使用shell命令, 及python 与shell 中的变量相互通信

1. python中使用shell命令有多种方法,我自己觉得比较好用的是用commands模块: import commands a,b = commands.getstatusoutput("ls -Al") a是退出状态(int类型), b是shell 命令的输出结果 python -> shell: 1.环境变量 import os  var=123或var='123'os.environ['var']=str(var)  #environ的键值必须是字符串   os.sy