没必要再嵌套一个函数,直接传参也可以
Topic source其实感觉这个只是一个小Trick 其实博主只是想说闭包在返回时没有执行,所以不能引用会变的循环变量等 你这边其实是定义了一个含有默认参数的函数,而默认参数的计算是在函数定义时候就已经计算完毕的 也就是说虽然你这里没有定义另外一个新的函数,但是原理是和博主最后那个例子一样的。因为已经计算完毕了默认参数的值,所以返回的实际上就是含有特定默认参数的f,那么自然能达到效果,但是这种方法其实不利于理解闭包。
=====>fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()
这里f(i)本身就是执行f函数,如果你仍然返回f函数的引用f,即:fs.append(f),照样不会执行,程序没执行跟闭包没关系。
- 1
JeromeDeng