闭包 1.注意:返回的函数内部不要使用后续会发生变化的变量. def f(): gs = [] for k in range(1, 4): def g(i): return i + k gs.append(g) return gs 例如这段代码感觉上应该返回三个函数分别return i+1.return i+2.return i+3(i为新函数参数),但事实却是得到了三个return i+3. >>> from test import f >>> g1, g2, g3…
首先先引用<JavaScript权威指南>里面的一句话来开始我的博客:函数的执行依赖于变量作用域,这个作用域是在函数定义时决定的,而不是函数调用时决定的. 因此,就出现了如下的几串代码: var a="outside"; function area(){ var a="inside"; function b(){ return a; } return b(); } area(); 结果为:inside 这样的结果并不太出乎意料,因为在执行area()的时…