当前位置: 首页 > news >正文

day 31

文件的拆分

1. 项目核心代码组织

src/(source的缩写):存放项目的核心源代码。

2. 配置文件管理

config/ 目录:集中存放项目的配置文件,方便管理和切换不同环境(开发、测试、生产)的配置。

3. 实验与探索代码

notebooks/ 或 experiments/ 目录:用于初期的数据探索、快速实验、模型原型验证。

4. 项目产出物管理

data/ 目录:存放项目相关数据。

models/ 目录:专门存放训练好的模型文件,根据模型保存格式不同,可能是 `.pkl`(Python  pickle 格式,常用于保存 sklearn 模型 )、`.h5`(常用于保存 Keras 模型 )、`.joblib` 等。

reports/ 或 output/ 目录:存储项目运行产生的各类报告和输出文件。

if __name__ == "__main__"

常常会看到if __name__ == "__main__"这个写法,实际上,每个文件都是一个对象,对象就会有属性和方法。

如果直接运行这个文件,则__name__等于__main__,若这个文件被其他模块导入,则__name__不等于__main__。

这个写法有如下好处:

1. 明确程序起点:一个 Python 项目往往由多个模块组成。if __name__ == "__main__" 可清晰界定程序执行的起始位置。比如一个包含数据处理模块 data_processing.py、模型训练模块 model_training.py 的机器学习项目,在 model_training.py 中用 if __name__ == "__main__" 包裹训练相关的主逻辑代码,运行该文件时就知道需要从这里开始执行(其他文件都是附属文件),让项目结构和执行流程更清晰。(大多时候如此)

2. 避免执行:python遵从模块导入即执行机制,当你使用 import xxx 导入一个模块时,Python 会执行该模块中的所有顶层代码(即不在任何函数或类内部的代码)。如果顶层代码中定义了全局变量或执行了某些操作(如读取文件、初始化数据库连接),这些操作会在导入时立即生效,并可能影响整个程序的状态。为了避免执行不必要的代码,我们可以使用 if __name__ == "__main__" 来避免在导入时执行不必要的代码。这样,只有当模块被直接运行时(即被执行 python xxx.py),才会执行顶层代码,而导入时则不会执行。这样,我们就可以确保在导入模块时,不会执行不必要的代码,从而提高程序的性能和可维护性。

   

3. 合理的资源管理:if __name__ == "__main__" 与定义 main 函数结合使用,函数内变量在函数执行完这些变量被释放,能及时回收内存资源,避免内存泄漏,保证程序高效运行。

心脏病预测实例

其中

├── data/                   # 数据文件夹

│   ├── raw/               # 原始数据

├── src/                   # 源代码

│   ├── __init__.py

│   ├── data/             # 数据处理相关代码

│   │   ├── __init__.py

│   │   ├── preprocessing.py

│   │

│   ├── models/           # 模型相关代码

│   │   ├── __init__.py

│   │   ├── train.py

│   │

│   └── visualization/    # 可视化相关代码

│       ├── __init__.py

│       └── plots.py

├── notebooks/            # Jupyter notebooks

│   └── 数据处理.ipynb

├── requirements.txt      # 项目依赖

└── README.md            # 项目说明文档

@浙大疏锦行

http://www.xdnf.cn/news/555589.html

相关文章:

  • STM32之定时器(TIMER)与脉冲宽度调制(PWM)
  • Glasgow Smile: 2靶场渗透
  • PostGIS栅格数据类型解析【raster】
  • 【深入理解索引扩展—1】提升智能检索系统召回质量的3大利器
  • 详解ip地址、子网掩码、网关、广播地址
  • 系统编程的标准IO
  • 【LINUX操作系统】日志系统——自己实现一个简易的日志系统
  • 容器环境渗透测试工具(docker渗透测试工具、kubernetes)
  • 一文掌握vue3基础,适合自学入门案例丰富
  • FreeRTOS学习笔记【11】-----任务列表
  • 第40天-Python开发音乐播放器完整指南
  • 左右边界策略
  • 前端读取本地项目中 public/a.xlsx 文件中的数据 vue3
  • Linux管道工具
  • 全能签软件的由来和介绍
  • MRVG-Net论文精读
  • Linux周测(一)
  • 龙虎榜——20250520
  • vue3+elementPlus穿梭框拖拽
  • MONA:5%参数微调超越全量微调,CVPR2025新型视觉适配器
  • Linux学习心得问题整理(二)
  • 工业智能网关在工业锅炉安全监控中的组网配置指南
  • C++ QT 与 win32 窗口可以互操作
  • HarmonyOS5云服务技术分享--ArkTS开发函数
  • SpringBootDay1|面试题
  • 环特生物董事长汤珣、执行总经理张勇赴白云美湾国际化妆品研究院集群考察调研
  • ES6核心特性与语法
  • HarmonyOS5云服务技术分享--ArkTS调用函数
  • DAY 30 超大力王爱学Python
  • 2025最新的自动化测试面试题【答案+文档】