built-in names, the global names in a module, the local names in a function invocation. In a sense the set of attributes of an object also form a namespace.
不同名称空间内的名字没有任何关系。
任何以点号访问的名字,我们都可以称之为 attribute。严格地说,模块内的名字就是模块的属性,模块内定义的全局变量和模块本身的属性拥有相同的名称空间。
名称空间在不同的时间构造,而且拥有不同的生命周期。
built-in名称空间在python解释器启动的时候生成,而且永远不会被删除。
函数的局部名称空间在函数调用的时候生成,当函数返回或抛异常时删除,每次递归都会生成新的名称空间。
作用域是指能直接访问名称空间的python文法块。直接访问的意思是不通过全限定名来访问。
nonlocal 最近的外层
global 模块的全局
这两个关键字是关于重绑定的,与读无关,只与赋值有关
在Python中,确实只有在执行def和class语句的时候会产生新的作用域,至少根据我现在对Python源码的认识是这样的。而if,try,for等语句的执行不会产生新的作用域。