到底什么是python中的模块

python模块

什么是模块

在《失控》中提到一个几千万行的程序(操作系统)要想没有bug是很难,减少bug的解决方案就是不断的拆分功能项,直到不能拆分为止,只要保证拆分的最小功能项通过一定的单元测试,就可能消费bug(当然还有集成性和系统性的bug)。《失控》里说的就是现代软件工程的模块化开发方式,在面向对象开发以及架构设计上都会涉及到。

那什么是模块?从上面可知,模块可以理解为独立的功能拆分,可根据具体业务拆分成大模块和小模块。

举几个例子:

一个入库系统可以拆分成前端的展示模块,后端的业务处理以及中间的交互层;后端业务处理可以拆分成数据处理(如数据库操作等)和具体的不同的业务模块(如计费模块,折扣模块,物料模块等);

一个深度学习的训练可以拆分:

  • 数据模块:负责处理和加载数据
  • 网络模块:负责构建深度学习网络
  • 训练模块:负责调用数据、构建网络以及设计损失和优化器,以及梯度方向传播,还有模型参数的保存和加载等
  • 测试推理模块:负责模型测试和推理
  • 功能模块:比如常见的utils

以上可能是比较大的模块,还可以细分成更细的小的模块;

  • 比如数据模块,可以拆分成小的特定数据的模块,比如不同的数据集的解析不同,可以构建不同的数据集模块和以及可能的数据处理模块(如数据增强);
  • 网络模块,可以拆分成不同类型的网络等

可想而知,模块和模块之间是存在引用的关系,设计时要尽可能做到松耦合,能更友好的变更,如果一次变更需要修改大部分的代码,可以考虑下是否做到合理的模块化设计。

总结一下:

  • 模块是功能的划分,是软件程序的架构设计
  • 模块化是减少bug的有效途径
  • 可以适当的模块化,也不要过度模块化,看功能的复杂性,越复杂就有必要拆分的更细
  • 千万不要把所有代码都写到一个文件哦!
  • 模块不要相互引用
  • 如果你听到别人说什么数据层,业务层,xx层,你可以理解为就是模块

python中模块

python中模块可以分为2个:

  • 一个python的.py文件,真正的处理功能的模块,可以是公共变量、函数以及类等
  • 对模块的逻辑划分即,通过目录层级的方式来管理模块,python是通过package包的方式来实现的;

一个简单的python模块设计:包括主程序main.py,模块model和两个package包(data/utils)

./
├── main.py
├── model.py
├── data
│   ├── dataset.py
│   ├── __init__.py
├── utils
│   ├── utils.py
│   ├── __init__.py

我们先来看下,和主程序平级的模块的调用,model.py 如下包括变量、函数和类等:

  • model.py
test = 1

def func
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值