python基础语法01——基本类型
python基础语法02——复合类型
python基础语法03——语句构成
python基础语法04——函数
python基础语法05——递归及装饰器
python基础语法06——类与对象
python基础语法07——迭代器与生成器
在 Python 开发中,模块化编程是组织代码、提升可维护性和复用性的核心思想。通过模块和包,开发者可以将复杂的功能拆解为独立的单元,同时借助系统模块和第三方库快速构建功能。
在 Python 中,模块 是组织代码的基本单元,通常是一个以 .py 为扩展名的文件,包含函数、类、变量或可执行代码。模块化编程的核心思想是将复杂程序拆分为独立、可复用的代码块,从而提高代码的可维护性和协作效率 。
例如:
# math_utils.py
def add(a, b):
return a + b
定义
创建一个 .py 文件,文件名即为模块名。模块中可以定义函数、类、变量等,例如 math_utils.py 包含数学运算函数 。
导入
Python 通过 import 语句导入模块,支持以下方式:
import 模块名 [as 模块新名字1]
导入一个模块到当前程序
from 模块名 import 模块属性名 [as 属性新名]
导入一个模块内部的部分属性到当前程序
from 模块名 import *
导入一个模块内部的全部属性到当前程序
模块中的代码在首次导入时会执行一次,通常用于初始化操作(如加载配置)。
Python 标准库自带的模块,无需安装即可使用
特点
- 即用即导入:直接
import
即可使用。- 性能高效:通常使用 C 语言实现。
常见系统模块:
模块 | 功能 | 官方文档 |
---|---|---|
math |
数学运算 | https://docs.python.org/zh-cn/3.12/library/math.html |
os |
操作系统接口 | https://docs.python.org/zh-cn/3.13/library/os.html |
os.path |
路径相关 | https://docs.python.org/zh-cn/3.13/library/os.path.html |
datetime |
日期和时间 | https://docs.python.org/zh-cn/3.13/library/datetime.html |
random |
随机数生成 | https://docs.python.org/zh-cn/3.13/library/random.html |
time |
时间 | https://docs.python.org/zh-cn/3.13/library/time.html |
由社区或开发者维护的模块,需通过 pip 安装
常见第三方模块:
模块 | 功能 | 示例 |
---|---|---|
numpy |
数值计算 | 科学运算、矩阵操作 |
pandas |
数据分析 | 数据清洗与处理 |
matplotlib |
数据可视化 | 绘制图表 |
requests |
HTTP请求处理 | 爬取网页内容,调用API |
flask |
Web应用框架 | 快速搭建Web服务 |
开发者根据需求自行编写的模块,例如 data_processing.py 或 utils.py。通过模块化拆分,可将项目逻辑解耦,便于团队协作 。
utils.py
文件:# utils.py
def add(a, b):
return a + b
def greet(name):
return f"Hello, {name}!"
main.py
文件,并导入自定义模块:# main.py
import utils
# 若需要跨文件夹使用,假设main.py与utils目录同级
from utils.math_utils import add
print(utils.add(3, 5)) # 输出: 8
print(utils.greet("Alice")) # 输出: Hello, Alice!
包 是模块的集合,用于组织多个模块。通常是一个包含多个 .py 文件的目录,并包含一个特殊的 init.py 文件(Python 3.3+ 可省略)。包的核心作用是将模块按功能分类,形成层次化的代码结构。
文件 __init__.py 可为空,也可以包含初始化代码。
例如,一个包的结构可能如下:
my_package/
├── __init__.py
├── module1.py
└── module2.py
结构:
my_package/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
导入:
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
from 包名 import *
from 包名.模块名 import *`
一般来讲是要有的,如果是Python 3.3+ ,则没有这个文件也可以。
_ _ i n i t _ _ . p y \_\_init\_\_.py __init__.py 用于初始化Python包或模块,作用有:
- 标识包目录: 告诉Python解释器当前目录应被视为一个包。
- 执行初始化代码: 可以包含任何代码,通常用于包的初始化操作,如变量初始化、导入模块等。这些代码在包被导入时执行。
- 控制包的导入行为: 通过
__all__
变量明确指定从包中可以导入哪些模块,从而限制包的公开接口。- 提供包级别的命名空间:
__init__.py
中定义的变量和函数可以在包的模块中共享。- 批量导入模块: 可以在
__init__.py
文件中批量导入模块,这些模块可以更方便地使用。
模块 | 包 |
---|---|
一个Python文件 | 一个包含__init__.py 的文件夹 |
提供基本功能单元 | 用于组织多个模块 |
文件名为.py |
目录名 |
在使用 import module_name时,Python 会按照特定顺序搜索并加载模块。
查找优先级 | 查找位置 | 说明 |
---|---|---|
1️⃣ 内置 C 扩展模块 | sys.builtin_module_names | 如 math , sys , time , os |
2️⃣ sys.modules 缓存 | sys.modules | 避免重复加载 |
3️⃣ 当前目录 | os.getcwd() | 同名文件或目录 |
4️⃣ PYTHONPATH 变量 | sys.path | 环境变量指定的路径 |
5️⃣ Python 标准库 | /usr/lib/python3.x/Lib/ | 标准 Python 库 |
6️⃣ site-packages (第三方库) |
site.getsitepackages() | pip install 安装的模块 |
模块化编程是 Python 开发的核心思想,通过模块和包实现代码的结构化管理:
合理利用模块化编程思想,可显著提升代码质量、开发效率和团队协作能力。