文章目錄
- 包的基本概念
- 創建包的基本結構
- __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 | 不需要 | 必須存在(標識文件夾為包) |