2017年6月4日星期日

和js比,py的一点奇怪

写js多了,看一下py,发现一点奇怪,关于闭包的。
js
var m = 1;
function a(){
 m = 2;
 return function(){
  console.log(m);
 } 
}
m = 3
var x = a();
x();
m = 4;
x();
执行,肯定是打印出,2和4。也就是m的全局变量的修改,影响了闭包。 但是py里
m = 1
def a():
    m = 2
    def b():
        print(m)
    return h:
m = 3
x = a()
x()
m = 4
x()
执行,打印出,2和2。也就是m的修改没影响闭包。对于闭包来讲,m=2固定为环境变量了