目录
模块(Module)
包(Package)
包和模块的区别
使用场景
模块(Module)
模块是一个包含Python代码的文件,通常以.py
为扩展名。它用于组织相关的函数、类和变量等代码,方便复用和管理。
- 将代码分割成独立的单元,便于维护和复用。
- 避免命名冲突。
假设我们有一个模块文件math_operations.py
,内容如下:
# math_operations.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
pi = 3.14159
在另一个文件中,我们可以导入并使用这个模块:
# main.py
import math_operations
result = math_operations.add(5, 3)
print(result) # 输出:8
print(math_operations.pi) # 输出:3.14159
包(Package)
包是一种更高级的组织方式,它是一个包含多个模块的目录。包可以嵌套,形成层级结构。包的主要作用是进一步组织代码,避免模块名冲突,并提供更清晰的结构。
- 包是一个包含
__init__.py
文件的目录。 __init__.py
可以为空,也可以包含初始化代码。
假设我们有一个包my_package
,结构如下:
my_package/
│
├── __init__.py
├── module1.py
└── module2.py
module1.py
的内容:
# module1.py
def greet(name):
return f"Hello, {name}!"
module2.py
的内容:
# module2.py
def farewell(name):
return f"Goodbye, {name}!"
__init__.py
的内容:
# __init__.py
from .module1 import greet
from .module2 import farewell
在另一个文件中,我们可以这样使用包:
# main.py
from my_package import greet, farewell
print(greet("Alice")) # 输出:Hello, Alice!
print(farewell("Bob")) # 输出:Goodbye, Bob!
包和模块的区别
- 模块是一个文件,包含代码。
- 包是一个目录,包含模块和子包,通过
__init__.py
来标识。
使用场景
- 如果代码量较小,功能单一,可以使用模块。
- 如果代码量较大,功能复杂,需要分层管理,可以使用包。