前一篇日志所写的 两段 Python 代码,你能看出运行结果吗?

现在将答案公布并给出相关的解析。

代码1之运行结果:

1 >>>f(1)
2 [1]
3 >>>f(2)
4 [1, 2]

  我们注意到:默认参数保留了前面调用所进行的修改。

代码2之运行结果:

1 >>>T(1)(Name=2)
2 1
3 {"Name": 2}

  这里有一个变量名解析的原则:LEGB。即当引用一个变量时,Python 按以下顺序依次进行查找,从本地变量中,在任意上层函数的作用域,在全局作用域,最后在内置作用域中查找。第一个完成查找的就算成功。变量在代码中被赋值的位置通常就决定了它的作用域。

----------

博友@wang_yb也给出了相当给力的分析,请看这里 

posted on 2011-07-21 10:52  oyzway  阅读(734)  评论(0编辑  收藏  举报