Python通过模块化开发优化代码的技巧分享

2025-04-09 16:50

本文主要是介绍Python通过模块化开发优化代码的技巧分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧...

写个项目,文件夹里 .py 文件堆成山,变量名取到怀疑人生,函数到处复制粘贴,代码改一次崩三回……每次打开项目,内心就一个感受——“这都啥玩意儿?” 

放心,咱今天就来聊聊如何用模块化开发,拯救你的代码,让它井井有条、优雅可读,从此告别“屎山”!

什么是模块化开发

简单来说,模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分。就像搭乐高一样,把不同的功能拆成一个个小块,随用随取,既不浪费时间,也不让代码乱成一锅粥。

python 里,模块(module) 就是一个 .py 文件,里面可以定义函数、类、变量,还可以包含可执行代码。多个模块可以组成包(package),多个包再组成一个完整的项目。

比喻一下:

  • 模块(module)= 乐高积木
  • 包(package)= 一套乐高玩具
  • 项目 = 拼好的乐高城堡 

说了这么多,咱直接上代码,看看到底怎么玩!

如何拆分代码

假设我们要写一个简单的计算器,支持加减乘除。一般人可能会直接在 calculator.py 里写一堆函数:

# calculator.py
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        raise ValueError("除数不能为0!")
    return a / b

这么写倒也行,但问题来了

  • 如果以后还要加新功能,比如平方、开根号,这个文件会越来越长。
  • 代码全堆在一个 .py 里,复用性差,逻辑混乱。
  • 别人(包括未来的自己)接手这段代码时,容易迷失在一堆函数里。

改进版:拆分成javascript模块

我们可以把不同功能拆分到不同的文件里,比如这样:

calculator/
│── operations/
│   │── __init__.py
│   │── add.py
│   │── subtract.py
│   │── multiply.py
│   │── divide.py
│── main.py

然后,每个文件只处理自己的功能:

# operations/add.py
def add(a, b):
    return a + b
# operations/divide.py
def divide(a, b):
    if b == 0:
        raise ValueError("除数不能为0!")
    return a / b

最后,在 main.py 里这样用:

from operations.add import add
from operations.divide import divide

print(add(10, 5))  # 15
print(divide(10, 2))  # 5.0

优点:

结构清晰:每个功能各司其职,文件夹一目了然。

易维护:以后加新功能,直接加新模块,互不影响。

可复用:不同项目里可以直接复用这些模块。

细节提示

  • __init__.py 的作用是把 operations/ 变成一个 Python ,这样我们才能用 from operations.add import add 这样的方式导入。
  • 模块的命名尽量简洁有意义,比如 add.py 而不是 this_is_add_function.py文件名太长会让导入变得痛苦 

让模块更强大:使用 __init__.py

有时候,我们不想每次都 from operations.add import add,希望直接 from operations import add,那就要利用 __init__.py

# operations/__init__.py
from .add import add
from .subtract import subtract
from .multiply import multiply
from .divide import divide

这样,我们就可以一次性导入所有操作:

frompython operations import add, divide

pChina编程rint(add(10, 5))  # 15
print(divide(10, 2))  # 5.0

很多 Python 开发者容易忽视的一点

如果 __init__.py不写任何内容,那 from operations import add 是会报错的,因为 Python 不知道 operations 这个包里有哪些东西能被导入。

你一定会遇到的问题

模块导入失败?ModuleNotFoundError

ModuleNotFoundError: No module named 'operations'

解决方案

确保你在正确的目python录下运行 main.py,不能在 operations/ 里运行。

main.py 开头加上:

import sys
sys.path.append(".")  # 确保 Python 知道当前目录

import * 为什么不推荐

有人喜欢这样写:

from operations import *

看似很方便,但这其实是个坑,因为:

  • 你不知道具体导入了哪些东西,可能会覆盖已有的变量。
  • 代码可读性变差,别人(包括未来的你)会一脸懵逼。
  • __init__.py 里没 __all__ 的话,这种方式甚至会报错。

所以,建议明确导入所需模块,比如:

from operations import add, divide  # 一目了然

总结

  • 模块化开发能让代码更清晰、可复用、易维护,是写好 Python 代码的必备技能!
  • 一个 .py 文件就是一个模块,多个模块组成包(package)。
  • __init__.py 可以帮助管理包的导入,但用法要注意。
  • 避免 import *,尽量使用显式导入,代码更可读。

到此这篇关于Python通过模块化开发优化代码的技巧分享的文章就介绍到这了,更多相关Python模块化开发内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于Python通过模块化开发优化代码的技巧分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154148

相关文章

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.