码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-31 14:41:15      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

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

我们可以就这样导入一个包: 

from Package1 import Module1

from Package1 import Package2

import Packag1.Module1

import Packag1.Package2 

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

>>> import Package1

>>> Package1.Module1

Traceback (most recent call last):

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




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

标签:

原文地址:http://my.oschina.net/u/1032854/blog/362670

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!