在Python2.7中,从包中导入名称、子模块或子包的优先级是多少?
在报告中说: 请注意,当使用来自\u包的导入\u项时,该项可以是包的子模块(或子包),也可以是包中定义的其他名称,如函数、类或变量在Python2.7中,从包中导入名称、子模块或子包的优先级是多少?,python,python-2.7,import,python-internals,Python,Python 2.7,Import,Python Internals,在报告中说: 请注意,当使用来自\u包的导入\u项时,该项可以是包的子模块(或子包),也可以是包中定义的其他名称,如函数、类或变量 如果a_包同时具有名为a_项的子包、名为a_项的变量和名为a_项的模块,该怎么办?优先事项是什么?我做了一个实验,结果显示优先级为变量子包子模块,但我不确定python导入功能是否在所有情况下都遵循规范顺序。问题中引用的名称在包中定义的下一句话(“变量”),使用您的措辞)优先于子模块/包: import语句首先测试项目是否在包中定义;如果不是,则假定它是一个模块并尝
如果
a_包
同时具有名为a_项
的子包、名为a_项
的变量和名为a_项
的模块,该怎么办?优先事项是什么?我做了一个实验,结果显示优先级为变量
子包
子模块
,但我不确定python导入功能是否在所有情况下都遵循规范顺序。问题中引用的名称在包中定义的下一句话(“变量”),使用您的措辞)优先于子模块/包:
import
语句首先测试项目是否在包中定义;如果不是,则假定它是一个模块并尝试加载它
我在Python2.7的文档中找不到明确的确认,即包优先于模块。我确实发现了这一点,在:
在导入处理期间,导入机制将继续迭代父路径中的每个目录,就像在Python 3.2中一样。查找名为“foo”的模块或包时,对于父路径中的每个目录:
- 如果找到
,则导入并返回一个常规包/foo/\uuuuu init\uuuuu.py
- 如果没有,但是找到了
,则导入并返回一个模块/foo.{py,pyc,so,pyd}