这是我的项目结构(Python3.5.1.):
a
├── b.py
└── __init__.py
文件b.py
为空。
文件__init__.py
是:
print(b)
如果运行import a
,则输出为:
文件b.py
为空。
文件__init__.py
是:
import a.b
print(b)
如果运行import a
,则输出为:
<module 'a.b' from '/tmp/a/b.py'>
为什么案例2中的程序没有失败?在
通常,如果我们运行import a.b
,那么我们只能通过a.b
来引用它,而不是{
Python在导入后将模块作为全局变量添加到父包中。在
因此,当您导入
a.b
时,名称b
作为一个全局添加到由a/__init__.py
创建的a
模块中。在从Python 3 import system documentation:
大胆强调我的。请注意,这同样适用于python2,但是python3使该过程更加明确。在
import
语句将模块带入作用域。您导入了b
,因此它就是一个模块对象。在阅读^{} 的文档:
在第一种情况下,您没有导入
b
。在相关问题 更多 >
编程相关推荐