python---包
文章目录
- 包的基本概念
- 创建包的基本结构
- __init__.py文件
- 导入包和模块
- 相对导入(在包内部使用)
- 导入包和导入模块的区别
包是Python中组织模块的一种方式,它允许你将相关的模块分组在一起,形成一个层次结构。包的主要目的是帮助避免命名冲突,并使代码更有组织性。
包的基本概念
1、包是一个包含__init__.py文件的目录(Python 3.3+中__init__.py不再是必须的,但通常仍会使用)
2、包可以包含子包(子目录)和模块(.py文件)
3、包通过点记法访问,如package.subpackage.module
创建包的基本结构
一个简单的包结构可能如下:
my_package/
│
├── __init__.py # 包的初始化文件
├── module1.py # 模块1
├── module2.py # 模块2
└── subpackage/ # 子包├── __init__.py└── module3.py # 子包中的模块
init.py文件
init.p文件调用,从父包到子包 。
init.p的__name__为当前文件夹的包名。
这个文件可以有以下作用:
1、标识目录是一个Python包
2、初始化包级别的代码
3、定义__all__列表来控制from package import *的行为
4、可以包含包级别的文档字符串
导入包和模块
# 导入整个包
import my_package# 从包中导入特定模块
from my_package import module1# 从子包中导入模块
from my_package.subpackage import module3# 导入模块中的特定函数/类
from my_package.module2 import some_function
相对导入(在包内部使用)
# 在module3.py中
from .. import module1 # 从父包导入
from . import module4 # 从同一子包导入
导入包和导入模块的区别
包和模块的__name__不同,包的__name__有层次感,如:“my_package.subpackage.module3”
特性 | 模块(Module) | 包(Package) |
---|---|---|
本质 | 单个 .py 文件 | 包含多个模块的文件夹(含 init.py) |
导入语法 | import module | import package.module |
层次结构 | 扁平化 | 嵌套化(支持子包) |
init.py | 不需要 | 必须存在(标识文件夹为包) |