1、个人理解定义:在一个函数A内部定义一个函数B,并在定义的内部函数B内对这个函数A的变量进行引用,那么内部函数B就是闭包。

2、特性:在内部函数内不能对A函数的变量进行更改  (但是可以将其封装到一个容器内,如列表,再对其进行更改即可)

3、应用场景:函数上次运行结果作为此次函数参数调用

def power(x):                   # x表示次方
def number(y): # y表示要计算x次方的数
product = y**x
return product
return number p2 = power(2)
p4 = power(4)
print '2的2次方: ',p2(2)
print '2的4次方: ',p4(2)
print '2.5的2次方:',p2(2.5)

4、返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。如果一定要引用循环变量那就再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变

def count():
fs = []
for i in range(1,5):
def f(j): # 用于绑定循环变量的函数
def g():
return j*j
return g
fs.append(f(i))
return fs for i in count():
print i() 输出:1,4,9,16

最新文章

  1. openvpn安装
  2. Mac地址泛洪攻击的防御措施和具体配置
  3. Yii2 事务
  4. ArcGIS 10.1 中的style和serverstyle及制作方法
  5. bzoj 2588 Spoj 10628. Count on a tree(主席树)
  6. 《深入剖析Tomcat》阅读(一)
  7. 新手入门 acm 输入输出练习
  8. postgresql数据库的数据导出
  9. iOS子线程更新UI的两种方法
  10. Latex:入门教程
  11. dom反转
  12. WPF仿网易云音乐系列(二、歌单创建窗口+登录设置模块)
  13. C++ 虚函数表解析 继承
  14. mysql学习(3)10045错误,连接不上数据库
  15. <转> 解决异常:IllegalStateException: Fragment <ThisFragment> is not currently in the FragmentManager
  16. Linux和Windows中查看端口占用情况
  17. 【Oracle】Oracle常用语句集合
  18. js来监控复制粘贴
  19. ESP32D0WDQ6 灯泡 黑客
  20. 【刷题】UOJ #79 一般图最大匹配

热门文章

  1. tcp/ip网络通讯安全加密方法
  2. [OS][FS]查看ext3文件系统分区的superblock
  3. c#截屏功能的实现
  4. Macaca框架
  5. window下 node.js 的安装
  6. jdbc 分页
  7. PCB AdminMongo安装使用
  8. TCP协议中的三次握手和四次挥手(图解)【转载】
  9. bzoj 1556: 墓地秘密【状压dp+spfa】
  10. 支持宕机自动恢复触发一次性或周期性任务执行的组件包首次介绍-easyTask