讲师中心 微信公众号
AI工具推荐 视频效率加速

Python 代码复用的正确姿势

酷敏君_5156

酷敏君_5156

发布时间:2026-02-22 13:18:12

|

759人浏览过

|

来源于php中文网

原创

真正能复用的代码需满足输入明确、副作用可控、不硬编码路径或配置;避免顶层执行逻辑,配置通过参数传入;import路径须规范,目录含__init__.py;函数应解耦I/O与状态;测试覆盖核心场景,类型检查保障兼容性。

python 代码复用的正确姿势

模块化不是把代码塞进 .py 文件就完事

很多人以为“写成函数+存成文件”就是复用,结果发现改一个地方,三个项目全崩——根本原因是没理清作用域和依赖边界。

真正能复用的代码,必须满足:输入明确、副作用可控、不硬编码路径或配置。

  • 避免在模块顶层执行逻辑(比如直接调用 main() 或读取 os.environ),否则导入时就触发行为
  • 配置项尽量通过参数传入,而不是依赖 config.py 或全局变量;若必须用配置,用 from pathlib import Path 定位,别写死 "./conf.yaml"
  • 第三方包版本要锁在 requirements.txt 里,尤其是 requests、pydantic 这类接口易变的库

import 路径错乱是 80% 复用失败的根源

不是代码不能跑,而是同一段代码,在 A 项目里 import utils 没问题,挪到 B 项目就报 ModuleNotFoundError——本质是 Python 的 sys.path 和包结构不匹配。

  • 永远用相对导入(from . import helpers)或绝对导入(from myproject.utils import clean_data),禁用 sys.path.append("..")
  • 确保每个目录含 __init__.py(哪怕空文件),否则 Python 不认它是包
  • 开发时用 -m 方式运行(如 python -m myproject.cli),而不是 python cli.py,避免当前目录干扰模块解析

函数设计要防“隐式耦合”,尤其涉及 I/O 和状态

一个叫 load_config() 的函数,表面看很通用,实际可能暗藏对本地文件系统、特定环境变量、甚至某个全局 logger 实例的依赖——这种函数在测试或跨项目使用时必然翻车。

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载

立即学习“Python免费学习笔记(深入)”;

  • 把 I/O 操作抽成参数:比如 load_config(file_path: Path),而不是内部写死 Path("config.json")
  • 避免函数内部修改全局状态(如往 logging.getLogger() 加 handler),应由调用方决定日志行为
  • 返回值优先用原生类型(dict、list、dataclass),少用自定义类,除非该类本身已作为公共契约稳定存在

测试不是可选项,而是复用的准入门槛

没测过的复用代码,等于没写。不是指覆盖率要 100%,而是至少覆盖:正常路径、空输入、异常输入、典型错误场景。

  • 用 pytest 写测试时,给测试函数加 tmp_path fixture 处理临时文件,别在 /tmp 硬写路径
  • 对网络请求等外部依赖,用 responses 或 httpx.MockTransport 拦截,别让测试依赖真实服务
  • 每次发布新版本前,用 mypy 检查类型注解是否一致,特别是函数签名变更后容易漏掉调用方的适配

真正难的从来不是“怎么写可复用的代码”,而是“怎么让别人不用看源码就能猜出它怎么用、在哪用、改了会牵连谁”。接口越薄,约束越显,复用才越稳。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2195

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3462

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1156

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3979

2025.09.10

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

4805

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

2030

2025.09.18

c++ 全局变量
c++ 全局变量

本专题整合了c++全局变量的使用、定义、作用域等等内容,阅读专题下面的文章了解更多详细内容。

199

2026.03.17

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3188

2023.10.19

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn