梁山网站建设电话,搜索引擎营销成功案例,电子信息工程,服务器做ssr后还可以做网站吗很多函数型的语言都有闭包这一概念#xff0c;比如python的兄弟js。人们刚听到闭包这一概念总会觉得它很晦涩#xff0c;难以理解。其实不然#xff0c;主要是他的名字起得太抽象了#xff0c;让人误以为很难。下面举一个例子#xff1a;#coding:utf-8def foo():nums [0]…很多函数型的语言都有闭包这一概念比如python的兄弟js。人们刚听到闭包这一概念总会觉得它很晦涩难以理解。其实不然主要是他的名字起得太抽象了让人误以为很难。下面举一个例子#coding:utf-8def foo():nums [0]*5for i in range(5):nums[i] lambda : i#这里为nums的五个元素绑定了5个函数函数要返回变量i的值#显然这里的函数并没有立即执行它只是保存了一段代码而已return numsfor func in foo():print func()#这里执行了保存在nums中的各个函数此时当这个函数接到执行命令后它才会#去找i这个变量它发现本函数作用域内没有就到上层函数作用域中去找结果#找到了它的值是4所以本例的结果全是4#结果# 4# 4# 4# 4# 4想要让它返回我们期望的结果也很简单只要让它在执行的时候实时的算出结果不就可以了#coding:utf-8def foo():nums [0]*5for i in range(5):nums[i] (lambda : i)()return numsfor num in foo():print num#结果# 0# 1# 2# 3# 4