Python模块包中__init__.py文件的做用

Package1/ __init__.py    Module1.py    Module2.py    Package2/ __init__.py       Module1.py       Module2.py 
shell

咱们能够就这样导入一个包: spa

from Package1 import Module1作用域

from Package1 import Package2it

import Packag1.Module1ast

import Packag1.Package2 import

__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都作不了的。变量

>>> import Package1module

>>> Package1.Module1object

Traceback (most recent call last):im

 File "<pyshell#1>", line 1, in ? 

 Package1.Module1AttributeError: 'module' object has no attribute 'Module1' 

咱们须要在 __init__.py 里把 Module1 预先导入:

#文件 __init__.py

     import Module1 

>>> import Package1

>>> Package1.Module1

<module 'Package1.Module1' from 'Module.pyc'>


__init__.py 中还有一个重要的变量,叫作 __all__。所有导入

from PackageName import * 
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前做用域中来。

好比: 
#文件 __init__.py

__all__ = ['Module1', 'Module2', 'Package2'] 

相关文章
相关标签/搜索