for i in range(3): print(i) print(i,"---") #Python的问题就在于,当循环结束以后,循环体中的临时变量i不会销毁,而是继续存在于执行环境中。
flist = [] for i in range(3): def foo(x): print(x + i) flist.append(foo) for f in flist: f(1) #原因在于foo()=x+i x=1,此时函数在局部变量中找i,没有,在全局变量中找,for循环将i变成了2,所以x+2=3
JavaScript中
<script> for(var i=0;i<3;i++){ console.log(i) } console.log(i,"---") #3 console.log(i,"---") #3 </script>