Python的Package中的__init__.py的作用

笔记3周前更新 Gang
130 0 0
Python的Package中的__init__.py的作用

__init__.py 文件在 Python 包中有几个关键作用,主要是将一个目录标记为一个 Python 包,同时定义包的内容。它可以为空,但通常用于导入包内的模块、定义包级别的变量,或执行一些初始化代码。以下是一些常见用法和代码示例:

1. 标记目录为 Python 包

__init__.py 的最基本作用就是将文件夹标记为 Python 包。即使是空文件,它的存在表明这个目录可以被作为模块导入。例如:

mypackage/
    __init__.py
    module1.py
    module2.py

在这里,mypackage 就是一个包,可以通过 import mypackage.module1 来导入 module1 模块。

2. 包的初始化代码

__init__.py 可以包含包初始化时的代码,比如设置配置项或打印初始化信息:

# mypackage/__init__.py
print("Initializing mypackage")

导入 mypackage 时,这条打印语句就会执行。

3. 定义包的公共接口

__init__.py 还可以通过导入子模块和函数,定义包的公共接口,使得导入更便捷。例如:

# mypackage/__init__.py
from .module1 import function1
from .module2 import function2

__all__ = ["function1", "function2"]

这样可以通过 from mypackage import function1, function2 来直接使用这些函数,而无需分别导入子模块。

4. 管理包的版本信息

可以在 __init__.py 中定义包的版本号,以便于在代码中使用:

# mypackage/__init__.py
__version__ = "1.0.0"

使用时可以通过 mypackage.__version__ 获取版本号。

示例结构

一个简单的包结构如下:

mypackage/
    __init__.py
    module1.py
    module2.py

代码内容:

# mypackage/module1.py
def function1():
    print("Function 1 from module1")

# mypackage/module2.py
def function2():
    print("Function 2 from module2")

# mypackage/__init__.py
from .module1 import function1
from .module2 import function2
__version__ = "1.0.0"

这样使用 mypackage 时,可以直接:

import mypackage

mypackage.function1()  # 输出: Function 1 from module1
mypackage.function2()  # 输出: Function 2 from module2
print(mypackage.__version__)  # 输出: 1.0.0

以上就是 __init__.py 的作用和常见用法。

© 版权声明

相关文章

暂无评论

暂无评论...