在python
模块的每一个包中,都有一个__init__.py文件,例如python2.5中的xml模块的目录结构就是:
xml
|_dom
|_etree
|_parsers
|_sax
|_ __init__.py
这个文件定义了包的属性和方法。例如,xml.dom
包含了
Node
类,它在xml/dom/__init__.py
中有所定义。当你将一个包作为模块导入(比如从
xml
导入
dom
)的时候,实际上导入了它的
__init__.py
文件。
一个包是一个其中带有特殊文件
__init__.py
的目录。__init__.py
文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须要存在。如果
__init__.py
不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
Python
代码
<embed type="application/x-shockwave-flash" width="14" height="15" src="/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=from%20xml%20import%20*" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
-
from
xml
import
*
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
Python
代码
<embed type="application/x-shockwave-flash" width="14" height="15" src="/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%23%E6%96%87%E4%BB%B6%20__init__.py%0A__all__%20%3D%20%5B%22dom%22%2C%20%22parsers%22%2C%20%22sax%22%2C%20%22etree%22%5D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
-
-
__all__ = ["dom"
,
"parsers"
,
"sax"
,
"etree"
]
分享到:
相关推荐
本文实例讲述了Python模块包中__init__.py文件功能。分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个...
总结来说,本实验的重点在于理解`__init__.py`文件在创建Python包中的作用,以及如何通过它来定义和组织包的公共属性和接口。通过这样的实践,开发者能够更好地管理和组织大型项目,提高代码的可读性和可维护性。在...
本文将深入探讨Python包的概念、功能,以及`__init__.py`文件的作用和用法。 ### 包的概念与作用 包是Python中的一个重要的组织模块的方式,它本质上是一个包含`__init__.py`文件的文件夹。通过创建包,我们可以将...
__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的...
假设想要在 `lib` 包中使用 `from lib import *` 的方式导入所有子模块,则可以在 `lib/__init__.py` 中定义如下内容: ```python __all__ = ["mod2", "mod3", "sub"] ``` 这表示当使用 `from lib import *` 时,...
`__init__.py` 文件在Python包中起着标识作用,表明其所在的文件夹是一个Python包,这样Python解释器在导入时就能识别并处理这个包。在PyQt5库中,`__init__.py` 可能包含了对其他模块的导入、设置、注册等操作,以...
2. **添加`__init__.py`文件:** 在这个目录中添加一个`__init__.py`文件,这样Python就会将这个目录视为一个包。 3. **添加模块:** 在包目录中添加你需要的Python模块文件。 #### 四、如何使用包 1. **导入整个...
例如,在一个名为`a`的包中,有子包`b`,其中包含`c.py`和`__init__.py`文件。若在这些文件中都打印出`__name__`的值,可以清晰地展示出它们之间的层次关系。 - 当我们通过命令行执行`python -c "import a.b.c"`时...
`__init__.py`文件在包中的作用至关重要: - **标识包**:当一个文件夹包含`__init__.py`(可以是空文件)时,Python识别其为一个包,允许导入其中的模块。 - **初始化**:`__init__.py`可以包含任何Python代码,当...
这个特殊的`__init__.py`文件告诉Python,这个文件夹应该被视为一个包。`__init__.py`可以是空文件,也可以包含初始化代码。例如,我们创建一个名为`mypackage`的包,其结构可能是这样的: ``` mypackage/ __init...
1.原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py那么它就是这个包的子包了。 当你将一个包作为模块导入(比如从...
day02回顾 模块 os.py sys模块 sys.path 自定义模块 ... 包的 __init__.py 内的 __all__ 列表 作用: 用来记录此包中有哪儿些子包或模块在用from 包 import * 语句导入时是否被调导入 说明:
- **跨包引用**:如果需要从一个包中的模块引用另一个包中的模块,可以在包的`__init__.py`文件中通过修改`sys.path`来解决: ```python import sys sys.path.append('..') ``` #### 五、模块的发布 模块发布...
- 创建一个新目录,并在其中创建一个名为`__init__.py`的文件,这个目录就变成了一个Python包。 - 如果需要在包内创建子包,只需在子目录中也放置一个`__init__.py`文件。 3. **导入包**: - 使用`.`操作符来...
在MySQLdb这个包中,`__init__.py`通常包含了导入和初始化其他模块的代码,使用户可以通过`import MySQLdb`的方式来使用整个库。这个文件可能定义了一些基本的配置,以及对其他子模块的导出,比如连接对象、游标对象...
`__init__.py`文件的存在标识了`my_project`、`folder1`和`folder2`是Python包,使得它们的成员可以被导入。 4. **添加路径到sys.path**: 如果你需要导入的模块位于`sys.path`之外,可以通过在程序开始时动态...
这个特殊的`__init__.py`文件使得该文件夹被视为一个Python包,可以被导入并作为程序的一部分来使用。 在提供的例子中,我们看到一个名为"sound"的顶级包,它包含了三个子包:`formats`、`effects`和`filters`。每...
- `__init__.py`: 通常在Python包中用于标识该目录为一个模块。 - `read.t`: 可能是项目的帮助文档或者其他文本资源文件。 - `要求.txt`: 可能列出了项目运行所需的操作系统或软件环境要求。 - `wmain.ui`: Qt ...