Python模块命名空间与重载:深入解析
1. 文件如何生成命名空间
在Python中,文件是如何转变为命名空间的呢?简单来说,在模块文件顶层(即不在函数或类体内)被赋值的每个名称都会成为该模块的一个属性。
例如,在模块文件 M.py 的顶层有赋值语句 X = 1 ,那么名称 X 就会成为 M 的一个属性,我们可以在模块外部通过 M.X 来引用它。同时, X 在 M.py 内部的其他代码中也会成为一个全局变量。为了更好地理解这一点,我们需要更正式地解释模块加载和作用域的概念:
- 模块语句在首次导入时运行 :当一个模块在系统中的任何位置首次被导入时,Python会创建一个空的模块对象,然后从上到下依次执行模块文件中的语句。
- 顶层赋值创建模块属性 :在导入过程中,文件顶层那些不在 def 或 class 内部的赋值语句(如 = 、 def )会创建模块对象的属性,这些被赋值的名称会存储在模块的命名空间中。
- 模块命名空间可通过 __dict__ 或 dir(M) 访问 :通过导入创建的模块命名空间是字典类型,我们可以通过与模块对象关联的内置 __dict__
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



