深入Python: __init__.py 用法

原文:http://www.2cto.com/kf/201204/129388.html

python的每个模块的包中,都有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的module。
那么,__init__.py还有什么别的功能呢?
其实,__init__.py里面还是可以有内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。
我们可以再__init__.py文件中再导入其他的包,或者模块。
[python]
import readers 
import writers 
import commands 
import users 
import meta 
import auth 
import admin 

这样,当我们导入这个包的时候,__init__.py文件自动运行。帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。
不需要一个个去导入module了。
__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:
from PackageName import *
这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:
#文件 __init__.py

__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]

如:在一个包里有foo.py、__init__.py

#__init__.py
import os
import datetime
#foo.py
from __init__ import *
print datetime.datetime.now()

则输出:2013-07-11 11:34:41.250000

Python中,包是一种组织Python模块的方法,它将相关的模块组合在一起,形成一个大的模块。包可以包含子包和模块,以及其他资源文件。 在一个包目录中,通常会有一个名为`__init__.py`的文件。这个文件的主要作用是标识该目录为Python包,同时可以在其中编写一些初始化代码。 `__init__.py`可以为空文件,也可以包含Python代码。如果`__init__.py`文件存在,则在导入包时会自动执行其中的代码。这就使得我们可以在包的初始化过程中完成一些需要执行的操作,例如设置环境变量、导入必要的模块等。 例如,如果我们有一个名为`mypackage`的包,那么它的目录结构可能如下所示: ``` mypackage/ __init__.py module1.py module2.py ``` 其中,`__init__.py`可以包含一些初始化代码,例如: ```python # 在 __init__.py 中导入模块 from .module1 import * from .module2 import * ``` 这样,在导入`mypackage`包时,就会自动导入`module1`和`module2`模块。 此外,`__init__.py`还可以定义包级别的变量和函数,供包内的模块使用。例如: ```python # 定义包级别的变量 PI = 3.14 # 定义包级别的函数 def square(x): return x ** 2 ``` 这样,在包内的模块中,我们就可以直接使用`mypackage.PI`和`mypackage.square()`来访问这些变量和函数了。 总之,`__init__.py`文件是Python包的重要组成部分,它可以帮助我们更好地组织和管理Python代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值