DAY34 文件的规范拆分和写法

一个清晰的项目结构通常遵循以下通用拆分逻辑:

  1. 按工作流分块 :首先将代码按机器学习流程(如数据处理、模型训练、性能评估等)划分到独立的 .py文件中,这是构建有序项目最基础也最关键的一步。

  2. 统一工具模块 :将公用辅助功能集中写入一个公共的 utils.py文件中。

  3. 整合配置参数 :将所有配置项与参数统一归入一个专门的 config.py文件,便于集中管理。

  4. 隔离内容与源码 :在顶层建立 data/models/等目录,专门存放数据和模型文件,使之与存放代码的 src/目录物理分离。

遵循这些通用的组织原则,你的项目结构便会自然而然地变得层次分明、易于管理。

关于if name == "main"

这个写法就是用来区分"这个文件是被直接运行,还是被其他文件导入"的。

示例说明:

假设有一个项目,有两个Python文件:

文件1:utils.py(一个工具文件,提供计算功能)

示例代码:

python 复制代码
# 这个文件定义一些工具函数

def add(a, b):
    """计算两个数的和"""
    return a + b

def multiply(a, b):
    """计算两个数的积"""
    return a * b

# 下面这行代码是测试代码
# 如果没有 if __name__ == "__main__" 会怎样?
print("正在测试工具函数...")
print(f"2 + 3 = {add(2, 3)}")
print(f"2 × 3 = {multiply(2, 3)}")
print("测试完成!")

文件2:main.py(主程序文件)

示例代码:

python 复制代码
# 主程序文件,导入并使用工具文件
from utils import add, multiply

print("=== 主程序开始运行 ===")
result1 = add(10, 20)
result2 = multiply(5, 6)
print(f"10 + 20 = {result1}")
print(f"5 × 6 = {result2}")
print("=== 主程序结束 ===")

如果直接运行 main.py,会发生什么?

实际输出:

正在测试工具函数...

2 + 3 = 5

2 × 3 = 6

测试完成!

=== 主程序开始运行 ===

10 + 20 = 30

5 × 6 = 30

=== 主程序结束 ===

解决方案:使用 if __name__ == "__main__"

修改后的 utils.py

示例代码:

python 复制代码
def add(a, b):
    """计算两个数的和"""
    return a + b

def multiply(a, b):
    """计算两个数的积"""
    return a * b

# 增加这个判断
if __name__ == "__main__":
    # 只有直接运行这个文件时,下面的代码才会执行
    print("正在测试工具函数...")
    print(f"2 + 3 = {add(2, 3)}")
    print(f"2 × 3 = {multiply(2, 3)}")
    print("测试完成!")

实际输出:

=== 主程序开始运行 ===

10 + 20 = 30

5 × 6 = 30

=== 主程序结束 ===

@浙大疏锦行

相关推荐
IT笔记40 分钟前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
EQUINOX11 小时前
【论文阅读】| MoCo精读
论文阅读·人工智能·python·深度学习·机器学习
逝水无殇1 小时前
C# 运算符重载详解
开发语言·后端·c#
TPBoreas1 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言
用户8356290780511 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
敲代码的嘎仔2 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
江华森2 小时前
Python 实现高德地图找房(一):环境搭建与数据爬虫
开发语言·爬虫·python
杜子不疼.2 小时前
【Qt初识】信号槽(三):机制意义、断开连接与 Lambda 表达式
开发语言·数据库·qt
VIP_CQCRE3 小时前
用 Ace Data Cloud 快速接入 OpenAI Chat Completions:对话、流式、多轮和多模态一篇打通
python·ai·openai·api·教程
AOwhisky3 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环