1.将目标标记成python包
在 Python 的文件系统中,__init__.py 文件用于将一个目录标记为一个 Python 包。如果没有这个文件,Python 解释器会将目录视为普通文件夹,而不是一个可以导入的模块或包。
例如,假设有一个目录结构如下:
my_package/
__init__.py
module1.py
module2.py
由于存在 __init__.py 文件,my_package 被视为一个 Python 包,可以通过 import my_package 来导入整个包,或者通过 from my_package import module1 来导入包中的模块。
2.初始化包的内容
__init__.py 文件可以包含初始化代码,这些代码会在导入包时自动执行。例如,可以在这个文件中定义一些全局变量、函数或者类,或者执行一些初始化操作。
例如:
# my_package/__init__.py
print("Initializing my_package")
version = "1.0.0"
当导入 my_package 时,会打印出 "Initializing my_package",并且可以在包外通过 my_package.version 访问版本号。
3.控制模块的导入
在 __init__.py 文件中,可以通过 import 语句导入包中的模块,从而控制哪些模块可以被外部访问。
例如:
# my_package/__init__.py
from . import module1
from . import module2
4.定义包的接口
__init__.py 文件可以定义包的公共接口,通过 __all__ 列表来指定哪些模块或对象可以被 from package import * 导入。
例如:
# my_package/__init__.py
from .module1 import func1
from .module2 import ClassA
__all__ = ["func1", "ClassA"]
这样,当使用 from my_package import * 时,只有 func1 和 ClassA 会被导入。
5.支持相对导入
在包内部的模块之间,可以使用相对导入。__init__.py 文件的存在使得相对导入成为可能。
例如:
# my_package/module1.py
from . import module2
这里的 . 表示当前包,module2 是同一包中的另一个模块。
265

被折叠的 条评论
为什么被折叠?



