好奇的探索者,理性的思考者,踏实的行动者。
Table of Contents:
这个文件(这个文件定义了包的属性和方法)其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py
不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
如果目录中包含了 __init__.py
时,当用 import
导入该目录时,会执行 __init__.py
里面的代码。这样我们可以在里面添加简化模块导入的代码。比如:
from blog_engine.main import Engine
在我们执行import时,当前目录是不会变的(就算是执行子目录的文件),所有在__init__.py
中import的时候是需要完整的包名。
from mypackage import *
__init__.py
中还有一个重要的变量,叫做 __all__
。
__all__
关联了一个模块列表,当执行 from xx import *
时,就会导入列表中的模块。
比如:
__all__ = ['subpackage_1', 'subpackage_2']