python的闭包当内层函数引用外层函数的局部变量时,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变

如下:

def count():fs = []for i in range(1, 4):def lazy_count(j):def cou():return j*jreturn cour = lazy_count(i)fs.append(r)return fsf1, f2, f3 = count()
print f1(), f2(), f3()

如果以上代码写成如下:

def count():fs = []for i in range(1, 4):def f():return i*ifs.append(f)return fsf1, f2, f3 = count()

最终得到的f1, f2, f3就都是9,是因为这行:

f1, f2, f3 = count()

里得到的count()函数中的f()函数中的i已经迭代至3了,最终得出的结果只能是9 9 9

而刚开始给出的代码中f1,f2,f3其实得到的是一个序列而已,而计算这个序列中每个元素时引用的闭包中的外层函数中的变量随着迭代变更,从1至3,并且同时计算出该次迭代所得的元素值append进序列返回,顾最终结果为1 4 9

转载于:https://blog.51cto.com/zhkpsty/1695120

python 闭包中引用的变量值变更问题相关推荐

  1. 如何将系统变量中的Path变量值由一整行变的条理清晰

    如何将系统变量中的Path变量值由一整行变的条理清晰 问题:在配置环境变量时,发现变量值呈现一整行的状态,不好查找需要的东西,如下图 解决方法:将C:\Windows\System32放在所有变量值前 ...

  2. python显示变量值_Python 中如何打印变量值

    展开全部 python打印变量的值需32313133353236313431303231363533e78988e69d8331333366306435要用到print语句,具体的使用方法如下: 1. ...

  3. 消除python变量的值_SPSS变量值标签的批量设置、复制、显示及删除问题

    在SPSS的变量设置中,值标签是对变量可能取值的注释说明.当我们需要给很多个变量设置相同的值标签时,该如何操作?例如,在很多调查问卷中,采用里克特量表设计,因此这些题目都采用相同的选项评分方法,例如1 ...

  4. python 闭包中的匿名函数详解!

    匿名函数 孔子曰:温故而知新,可以为师矣. 天若有情天亦老,人间正道是沧桑. Python–lambda表达式 lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就 ...

  5. python输出引号内的变量值_引号中的Python变量值

    我正在编辑一个脚本,它向openstack keystone进行身份验证以获取令牌.API调用可以工作,但我希望使用变量而不是直接值,以使其更具可读性和可重用性.但问题是这些值必须用引号(" ...

  6. python类中引用数据是通过_重载python类中的[]运算符以引用数字阵列数据内存

    我已经编写了一个数据容器类,它本质上包含一个numpy-ndarray成员,以及生成时间序列掩码/横截面掩码的方法,在环形缓冲模式下获取日期索引(行#).处理调整大小时要考虑到数据可能是环形缓冲区,以 ...

  7. PhoneWindowManager().interceptKeyBeforeQueueing()中的interactive变量值的来源

    这个值的来源是powerManager设置的.对应于PowerManagerService.java的mWakeFulness的WAKEFULLNESS_AWAKE和WAKEFULLNESS_DREA ...

  8. Python 顺序结构_交换变量值

    编程要求 本关的编程任务是补全inTurn.py文件中的函数部分,程序中给出a,b,c三个整数,要求实现先交换a,b的值,然后计算a + c的值并输出. 本关涉及的代码文件inTurn.py的代码框架 ...

  9. 深入理解Python闭包概念

    闭包并不只是一个Python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...

最新文章

  1. 小牛生产小牛的问题解决集粹
  2. Matlab与线性代数 -- 寻找矩阵的非零元素
  3. VS2013 VS2015 VS2017调试出现无法启动iis express web服务器
  4. C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧
  5. 同程旅行基于 RocketMQ 高可用架构实践
  6. ASP.NET分页方法的了解程度
  7. Python语言学习笔记
  8. git log 提交日志及图形化显示
  9. 微积分经典概念:极限、连续与函数
  10. IndexedDB封装
  11. 浏览器主页被篡改为hao123、360和2345解决办法
  12. Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
  13. 苹果手机软件闪退怎么解决_LOL手游卡顿闪退怎么办-卡顿闪退解决方法解析
  14. 团队作业第五次—项目系统设计与数据库设计
  15. A05-没有奥维vip,导入元素个数受限制,想导入三区三线图斑怎么办?
  16. 计算机表格里的隐藏怎么弄出来怎么办,电脑表格隐藏不见了怎么办
  17. JAVA仓库管理系统(附源码+调试)
  18. 计算机网络隧道工程,隧道工程
  19. 机器视觉系列(三)——电气部分
  20. 2021年,核定征收依然坚挺,税率低至0.5%

热门文章

  1. OpenCV3学习(6.1)——边缘检测---Canny,Sobel,Prewitt,Robert,Laplace,LOG,DOG算子
  2. 基于顺序存储结构的图书信息表的最佳位置图书的查找(C++)
  3. 基于python的空域变换
  4. 将本地项目上传到Github的两种方式 1.在线上传 2.使用Git客户端上传
  5. 挑战练习10.6 实现高效的RecyclerView刷新
  6. Windows下,MySQL root用户忘记密码解决方案
  7. li标签之间的空隙问题(转)
  8. Flex整合Spring
  9. .net 4 环境调用 .net 2 编译的DLL
  10. 先写一点informix的