python返回函数/函数编程
来源:互联网 发布:五十知天命 英文 编辑:程序博客网 时间:2024/05/16 19:35
先贴出几段代码
def count(): fs = [] for i in range(1,4): def f(): return i * i fs.append(f) return fs f1, f2, f3 = count()
def count(): fs = [] for i in range(1,4): j = i def f(): return j * j fs.append(f) return fs f1,f2,f3 = count()
def count(): fs = [] for i in range(1,4): def f(j): def k(): return j * j return k fs.append(f(i)) return fs f1,f2,f3 = count()
结果就不给答案了,不会可以动手试下。但是为什么会产生这样的结果呢?(⊙v⊙)嗯~答案在于迭代。前面那两个代码段的迭代由于创建的新函数都是引用其父函数的变量(暂时认为是父函数吧,因为我也不知道该叫什么),而父函数的变量由于循环而不断的更新其值,所以才导致结果都为一样。父函数的循环以及新创建的子函数并不是串行执行的,而是异步的。
在golang中也有这样的一段代码
s := []int{1,2,3}for _, i := range s {go func(){println(i)}()}time.Sleep(5000)
执行的结果为
333
这个是因为range的速度远远比新开出来的goroutine执行的速度开,从而导致每个goroutine使用的变量i 的值都为3
解决方法
s := []int{1,2,3}for _, i := range s {go func(j int){println(j)}(i)}time.Sleep(5000)
总结:在函数编程的时候特别需要注意的函数的执行顺序。尽量少引用父函数的变量。
0 0
- python返回函数/函数编程
- python函数式编程之返回函数
- python函数式编程(二)返回函数、匿名函数
- python核心编程-函数返回值
- 【编程语言】Python 函数多值返回
- 【python学习笔记】函数式编程:返回函数
- 自学Python day5--------函数式编程(返回函数)
- Learning Python 012 函数式编程 2 返回函数 匿名函数 装饰器 偏函数
- python函数式编程之返回函数、匿名函数、装饰器、偏函数学习
- python 函数返回多个值
- python函数返回多个值
- python函数返回值
- python中的返回函数
- python函数返回多个值
- python返回函数
- Python 函数返回值
- python中返回函数
- python中返回函数
- java的JFileChooser上传一个Excel文件并读取该文件的内容
- android:layout_weight实例计算详解
- 企业级Hadoop 2.x入门系列之十二入门视频分享
- Linux系统cp:omitting directory`XXX'问题解决
- 与运行时交互(Interacting with the Runtime)
- python返回函数/函数编程
- LVS+Keepalived实现高可用集群
- 无奈人心渐开明 贪嗔痴恨爱恶欲
- linux下github的搭建使用
- Python练手之6种经典排序算法
- JUnit4---实践一:运行指定类的某些测试方法
- hdu 1021 斐波那契2,找规律
- HDU2028 Lowest Common Multiple Plus【stein算法】【水题】
- 类似spring的AOP框架,动态获得代理类或目标类