python中的闭包
2016-02-06 21:05
666 查看
闭包
绑定外部变量的函数
返回一个绑定外部变量的内部函数
嵌套函数
内部函数用到了外部变量
外部函数返回内部函数
内部函数用到了外部变量为list,则可以从外部或内部改变值,并且即使外部没有引用也不会回收
例子
绑定外部变量的函数
返回一个绑定外部变量的内部函数
嵌套函数
内部函数用到了外部变量
外部函数返回内部函数
def pow_x(x): def echo(value): x=2 return value ** x return echo if __name__=='__main__': lst = (pow_x(2), pow_x(3), pow_x(4)) for p in lst: print p(2)内部变量不能"改变"外部变量
内部函数用到了外部变量为list,则可以从外部或内部改变值,并且即使外部没有引用也不会回收
例子
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'teng' def pow_y(x): def echo(value): x[0] = x[0]*2 # 可以改变值 访问了该值 而不是给予 # x=[2,2] return value ** x[0], value**x[1] return echo if __name__ == '__main__': lst2 = pow_y([1, 1]) print "closure powy", lst2(2) print "closure powy", lst2(3) print "closure powy", lst2(4)一个关于闭包的应用
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'teng' origin = [0, 0] legal_x = [0, 50] legal_y = [0, 50] def create(pos): def player(direction, step): new_x = pos[0]+direction[0]*step new_y = pos[1]+direction[1]*step pos[0] = new_x pos[1] = new_y return pos return player player1 = create(origin[:]) print player1([1, 0], 10) print player1([0, 1], 20) print player1([-1, 0], 10) print "orgin is", origin print "origin is",origin player2 = create(origin[:]) print player2([-1,0],10) print player2([1,1],20) print player2([1,0],10)
相关文章推荐
- Scala Monad Design Pattern
- 回调在python中
- 函数式编程扫盲篇
- Data dependancy and functional programming
- 门诊收费票据打印代码,望大家指正
- 一段测试DiskIO的代码
- 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作
- 经典算法(1)——8皇后问题求解(回溯法)
- 通讯录管理系统
- 文件,流
- C语言中的面向对象
- 转:最好的电脑配置
- 串口 API串口异步通讯
- socket之udp传输
- 一个写log的函数 log_func.c
- 戒烟不戒酒^^
- 用C语言实现类似于JAVA readLine()的功能
- 关于Android的开机RLE格式图片
- 模拟游戏过程的一个程序
- WCDMA的呼叫流程分析