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'] 

相關文章
相關標籤/搜索