news 2026/7/25 22:52:54

Python篇---模块化编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python篇---模块化编程

一、什么是模块化编程?

想象一下你要盖一座房子:

  • 你不会把所有材料堆在一起,而是会分成:

    • 地基模块

    • 墙壁模块

    • 屋顶模块

    • 门窗模块

模块化编程就是把代码分成多个独立的“积木块”,每个积木块负责特定的功能。

二、为什么要模块化?

不模块化的代码(混乱)

# 一个文件里什么都有,像乱糟糟的房间 def 计算面积(): ... def 处理数据(): ... def 保存文件(): ... def 发送邮件(): ... # 所有代码都挤在一起,很难维护

模块化的代码(整洁)

my_project/ ├── main.py # 主程序 ├── calculator.py # 计算模块 ├── data_processor.py # 数据处理模块 └── utils.py # 工具模块

三、Python模块化的三种方法

方法1:创建和使用模块(.py文件)

步骤1:创建模块

# calculator.py - 计算器模块 def add(a, b): """加法""" return a + b def subtract(a, b): """减法""" return a - b # 模块内部的测试代码 if __name__ == "__main__": print("测试计算器模块:") print(f"3 + 5 = {add(3, 5)}")

步骤2:使用模块

# main.py - 主程序 import calculator # 导入整个模块 result = calculator.add(10, 20) # 使用模块中的函数 print(f"10 + 20 = {result}")

方法2:只导入需要的部分

# main.py from calculator import add # 只导入add函数 result = add(10, 20) # 直接使用,不需要写calculator. print(f"10 + 20 = {result}")

方法3:给模块起别名(方便使用)

# main.py import calculator as calc # 别名 result = calc.add(10, 20) print(f"10 + 20 = {result}")

四、模块化编程的完整流程

第1步:规划功能模块

购物车系统/ ├── main.py # 程序入口 ├── product.py # 商品管理 ├── cart.py # 购物车功能 ├── user.py # 用户管理 └── payment.py # 支付功能

第2步:编写各个模块

# product.py - 商品模块 products = [ {"id": 1, "name": "苹果", "price": 5.0}, {"id": 2, "name": "香蕉", "price": 3.0} ] def get_product(product_id): """根据ID获取商品""" for product in products: if product["id"] == product_id: return product return None
# cart.py - 购物车模块 shopping_cart = [] def add_to_cart(product): """添加商品到购物车""" shopping_cart.append(product) print(f"已添加:{product['name']}")

第3步:在主程序中组合模块

# main.py - 主程序 import product import cart # 使用各个模块 apple = product.get_product(1) # 从商品模块获取苹果 if apple: cart.add_to_cart(apple) # 使用购物车模块添加商品

五、包(Package)的概念

当模块太多时,可以用文件夹来组织:

my_store/ # 项目文件夹 ├── main.py └── store/ # 包(包含__init__.py的文件夹) ├── __init__.py # 包标识文件(可以是空的) ├── product.py ├── cart.py └── user.py

使用包中的模块:

# main.py from store import product # 从store包导入product模块 from store.cart import add_to_cart # 导入特定函数 # 或者 import store.product as prod

六、实用的模块化技巧

技巧1:使用if __name__ == "__main__":

# calculator.py def add(a, b): return a + b # 这个代码只会在直接运行这个文件时执行 # 被其他文件导入时不会执行 if __name__ == "__main__": print("我是独立运行的")

技巧2:组织导入语句

# 好的导入组织方式 # 1. 标准库模块 import os import sys # 2. 第三方库 import requests # 3. 自己的模块 from my_module import my_function

技巧3:创建工具模块

# utils.py - 存放常用的工具函数 def format_price(price): """格式化价格显示""" return f"¥{price:.2f}" def validate_email(email): """验证邮箱格式""" return "@" in email and "." in email

七、一个完整的小例子

my_bank/ ├── main.py ├── account.py └── transaction.py
# account.py - 账户模块 class BankAccount: def __init__(self, owner, balance=0): self.owner = owner self.balance = balance def deposit(self, amount): self.balance += amount return self.balance
# transaction.py - 交易模块 def transfer(from_account, to_account, amount): if from_account.balance >= amount: from_account.balance -= amount to_account.balance += amount return True return False
# main.py - 主程序 from account import BankAccount from transaction import transfer # 创建账户 alice = BankAccount("Alice", 1000) bob = BankAccount("Bob", 500) # 执行转账 if transfer(alice, bob, 200): print(f"转账成功!Alice余额:{alice.balance},Bob余额:{bob.balance}")

八、给初学者的建议

  1. 从小开始:先尝试把一个长文件拆成2-3个小模块

  2. 按功能分组:把相关的函数放在同一个模块里

  3. 起好名字:模块名要能反映它的功能

  4. 先模仿:参考别人写好的模块结构

  5. 多练习:尝试把以前写的代码重新模块化

记住:模块化就像整理房间,开始可能会多花点时间,但后面会越来越方便!

快速参考表

概念代码示例说明
导入整个模块import math
math.sqrt(16)
最常用的方式,避免命名冲突
导入特定功能from math import sqrt
sqrt(16)
代码更简洁,但要小心命名冲突
使用别名import numpy as np
np.array([1,2,3])
简化长模块名,行业惯例
包导入from mypackage import mymodule
import mypackage.mymodule
组织大型项目
模块测试if __name__ == '__main__':区分直接运行和被导入

记忆口诀

模块化,好处多: 一拆二,功能单; 三导入,四组合; 若调试,用main; 包管理,层次清; 多练习,自然成!

这个框图展示了Python模块化编程的核心要点,从基本概念到实际应用,适合初学者作为学习路线图和速查参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 5:42:58

CMake编译实现RTSP推流功能全流程解析:Ubuntu平台详细教程

往期文章 RK3588+docker+YOLOv5部署:https://blog.csdn.net/FJN110/article/details/149673049 RK3588测试NPU和RKNN函数包装https://blog.csdn.net/FJN110/article/details/149669753 RK3588刷机:https://blog.csdn.net/FJN110/article/details/149669404 以及深度学习部署工…

作者头像 李华
网站建设 2026/7/19 10:00:16

25个DeepSeek降AI指令大全(附使用场景说明)

25个DeepSeek降AI指令大全(附使用场景说明) TL;DR(太长不看):本文整理了25个实测有效的DeepSeek降AI指令,分为角色设定类(8个)、风格要求类(9个)、句式干预类…

作者头像 李华
网站建设 2026/7/17 11:42:29

PHP消息队列使用教程:Redis/RabbitMQ实现异步处理

消息队列在PHP开发中不是可选项,而是处理高并发、解耦系统组件和实现异步任务的关键技术。它把耗时操作从请求响应链路中剥离,让PHP脚本快速返回,后台任务按顺序可靠执行。我经历过因同步处理导致接口超时的教训,才真正理解消息队…

作者头像 李华
网站建设 2026/7/18 14:11:26

一看就会:verl框架下数据格式转换实操演示

一看就会:verl框架下数据格式转换实操演示 在强化学习驱动的大模型后训练实践中,数据不是拿来就能用的——它必须严格符合框架定义的结构、字段和序列组织逻辑。verl作为专为LLM后训练设计的生产级RL框架,对输入数据有明确且不可妥协的格式要…

作者头像 李华
网站建设 2026/7/25 2:11:04

Win10/Win11防火墙控制软件联网全攻略

微软电脑(Windows 10/11)控制软件联网,优先用系统自带防火墙(免费、无额外安装),进阶可用第三方工具简化操作,以下是完整步骤与推荐方案一、系统自带:Windows Defender 防火墙&#…

作者头像 李华
网站建设 2026/7/24 5:53:27

计算机毕业设计springboot老年医疗保健网站的设计与实现 基于 SpringBoot 的银龄健康云服务平台构建与应用 面向智慧养老的 Java 医疗保健信息门户研发

计算机毕业设计springboot老年医疗保健网站的设计与实现qtbj9zq3 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 我国 60 岁以上人口已超 2.8 亿,慢性病共病、多重用…

作者头像 李华