前一篇日志所写的 两段 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 按以下顺序依次进行查找,从本地变量中,在任意上层函数的作用域,在全局作用域,最后在内置作用域中查找。第一个完成查找的就算成功。变量在代码中被赋值的位置通常就决定了它的作用域。
----------