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

DAY31-文件的规范拆分和写法

知识点回顾
  1. 规范的文件命名
  2. 规范的文件夹管理
  3. 机器学习项目的拆分
  4. 编码格式和类型注解

(一)文件拆分

 思考:如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个好处:

1. 可以让项目文件变得更加规范和清晰

2. 可以让项目文件更加容易维护,修改某一个功能的时候,只需要修改一个文件,而不需要修改多个文件。

3. 文件变得更容易复用,部分通用的文件可以单独拿出来,进行其他项目的复用。

这就涉及到文件的拆分

 ①机器学习项目流程——通常包含以下阶段:

  • 数据加载:从文件、数据库、API 等获取原始数据。
    • 命名参考:load_data.py 、data_loader.py
  • 数据探索与可视化:了解数据特性,初期可用 Jupyter Notebook,成熟后固化绘图函数。
    • 命名参考:eda.py 、visualization_utils.py
  • 数据预处理:处理缺失值、异常值,进行标准化、归一化、编码等操作。
    • 命名参考:preprocess.py 、data_cleaning.py 、data_transformation.py
  • 特征工程:创建新特征,选择、优化现有特征。
    • 命名参考:feature_engineering.py
  • 模型训练:构建模型架构,设置超参数并训练,保存模型。
    • 命名参考:model.py 、train.py
  • 模型评估:用合适指标评估模型在测试集上的性能,生成报告。
    • 命名参考:evaluate.py
  • 模型预测:用训练好的模型对新数据预测。
    • 命名参考:predict.py 、inference.py

②文件组织 

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

  • src/data/:放置与数据相关的代码。
  • src/models/:关于模型的代码
  • src/utils/:存放通用辅助函数代码

配置文件管理 :

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

实验与探索代码:

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

项目产出管理: 

  • data/ 目录:存放项目相关数据
  • models/ 目录:专门存放训练好的模型文件,根据模型保存格式不同,可能是 .pkl(Python pickle 格式,常用于保存 sklearn 模型 )、.h5(常用于保存 Keras 模型 )、.joblib 等。
  • reports/ 或 output/ 目录:存储项目运行产生的各类报告和输出文件。

总结通用拆分思路:

  1. 首先,按照机器学习的主要工作流程(数据处理、训练、评估等)将代码分离到不同的 .py 文件中。 这是最基本也是最有价值的一步。
  2. 然后,创建一个 utils.py 来存放通用的辅助函数。
  3. 考虑将所有配置参数集中到一个 config.py 文件中。
  4. 为你的数据和模型产出物创建专门的顶层目录,如 data/ 和 models/,将它们与你的源代码(通常放在 src/ 目录)分开。

③注意点: 

#if 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 函数结合使用,函数内变量在函数执行完这些变量被释放,能及时回收内存资源,避免内存泄漏,保证程序高效运行。

#编码格式:

        通常在首行注明# -*- coding: utf-8 -*-显式声明文件的编码格式,确保 Python 解释器能正确读取和解析文件中的非 ASCII 字符(如中文、日文、特殊符号等)。

#类型注解

  1.  变量类型注解语法为 变量名: 类型
  2. 函数类型注解为函数参数和返回值指定类型,语法为 def 函数名(参数: 类型) -> 返回类型。

def add(a: int, b: int) -> int:return a + bdef greet(name: str) -> None:print(f"Hello, {name}")

        3.类属性与方法的类型注解:为类的属性和方法添加类型信息。

# 定义一个矩形类
class Rectangle:width: float      # 矩形宽度(浮点数),类属性的类型注解(不初始化值)height: float     # 矩形高度(浮点数)def __init__(self, width: float, height: float):self.width = widthself.height = heightdef area(self) -> float:# 计算面积(宽度 × 高度)return self.width * self.height

#pyc文件的介绍:

pyc文件是Python的"编译后"文件,其中的"pyc"代表"Python compiled"。当你运行一个Python程序(比如你的机器学习脚本)时,Python解释器会做两件事:

  1. 首先把你的.py源代码文件编译成字节码(bytecode)

  2. 然后执行这些字节码

pyc文件就是存储这些字节码的文件,它的作用是让Python程序下次运行时可以更快启动,因为不需要重新编译源代码。

当在做机器学习项目时:

  1. 导入的各种库(如numpy, pandas, sklearn)都有对应的pyc文件

  2. 写的Python模块(如data_preprocessing.py)也会生成pyc文件

  3. 这些文件让机器学习代码加载更快

(二)作业

作业:尝试针对之前的心脏病项目,准备拆分的项目文件,思考下哪些部分可以未来复用。

heart_disease_project/
├── config/                  # 配置文件
│   ├── config.yaml         # 超参数、路径配置
│   └── .env                # 敏感信息(如API密钥)
├── data/                   # 数据管理
│   ├── raw/                # 原始数据(如heart.csv)
│   ├── processed/          # 处理后的数据
│   └── interim/            # 中间数据(可选)
├── src/                    # 核心代码
│   ├── data/               # 数据相关模块
│   │   ├── load_data.py    # 数据加载(可复用)
│   │   ├── preprocess.py   # 数据预处理(可复用)
│   │   └── feature_engineering.py  # 特征工程(可复用)
│   ├── models/             # 模型相关模块
│   │   ├── model.py        # 模型定义(可复用)
│   │   ├── train.py        # 训练逻辑(可复用)
│   │   └── evaluate.py     # 评估逻辑(可复用)
│   └── utils/              # 通用工具
│       ├── io_utils.py     # 文件读写(高度复用)
│       ├── logging_utils.py# 日志管理(高度复用)
│       └── plotting_utils.py # 可视化工具(高度复用)
├── notebooks/              # 探索性分析
│   └── initial_eda.ipynb   # 初步数据分析
├── models/                 # 保存训练好的模型
│   └── model.pkl
├── reports/                # 输出报告
│   ├── evaluation_report.txt
│   └── visualizations/     # 可视化结果
└── requirements.txt        # 依赖库列表 

① 可复用部分

  • load_data.py
#示例代码
# src/data/load_data.py
import pandas as pd
from typing import Optional
from config import DATA_PATH  # 从配置读取路径def load_csv(file_path: str = DATA_PATH) -> Optional[pd.DataFrame]:try:return pd.read_csv(file_path)except FileNotFoundError:print(f"文件 {file_path} 不存在!")return None
  •  preprocess.py
    # src/data/preprocess.py
    from sklearn.preprocessing import StandardScaler
    from pandas import DataFramedef normalize_data(df: DataFrame, columns: list) -> DataFrame:scaler = StandardScaler()df[columns] = scaler.fit_transform(df[columns])return df

  • model.py
    # src/models/model.py
    from sklearn.ensemble import RandomForestClassifier
    from typing import Dict, Anydef build_model(config: Dict[str, Any]):return RandomForestClassifier(n_estimators=config["n_estimators"],max_depth=config["max_depth"])

  • train.py
    # src/models/train.py
    from sklearn.model_selection import train_test_split
    import joblibdef train_model(model, X, y, test_size=0.2):X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size)model.fit(X_train, y_train)joblib.dump(model, "models/trained_model.pkl")return X_test, y_test

    ②总结复用性

  1. 数据模块:数据加载、预处理、特征工程代码可通过参数化和配置文件适配新数据集。

  2. 模型模块:模型定义和训练逻辑可扩展为通用框架(如支持PyTorch或TensorFlow)。

  3. 工具模块:日志、文件操作、可视化工具可跨项目直接复用。

  4. 配置文件:集中管理参数,避免硬编码,提升灵活性。

相关文章:

DAY31-文件的规范拆分和写法

知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 (一)文件拆分 思考:如何把一个文件,拆分成多个具有着独立功能的文件,然后通过import的方式,来调用这些文件。这样具有几个…...

[创业之路-369]:企业战略管理案例分析-9-战略制定-差距分析的案例之华为

一、综合案例 在战略制定中,华为通过差距分析明确战略方向,以应对市场挑战和实现长期发展目标。 以下为具体案例与分析: 1、案例背景 华为在通信设备领域崛起过程中,始终将差距分析作为战略制定的核心环节。面对国际竞争对手&…...

【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动

文章目录 前言一、HUAWEI MateBook Fold 非凡大师(一)非凡设计(二)非凡显示(三)非凡科技(四)非凡系统(五)非凡体验 二、HUAWEI MateBook Pro三、预热&#xf…...

深入理解Redis Cluster:架构、原理与实践

Redis 是一个高性能的键值存储数据库,广泛应用于缓存、会话存储、消息队列等场景。随着数据量和并发量的增长,单机 Redis 可能面临性能瓶颈和单点故障问题。为了解决这些问题,Redis 提供了 Redis Cluster,一种分布式解决方案&…...

分析 redis 的 exists 命令有一个参数和多个参数的区别

在 redis 中,exists 命令是用来查询某个或多个 key 是否存在的,返回存在的 key 的个数。 由于 redis 是按照键值对方式存储数据的,于是一个 key 只能对应一组数据,那么上述的 key 的个数指的即是需要查询的 key 中有几个 key 是存…...

[概率论基本概念1]什么是经验分布

一、说明 描述一个概率模型,有密度函数很好描述。如果写不出密度函数,退而用分布函数也能完整刻画,因此,分布函数表示比密度函数表示更加宽泛普适。本片讲述经验分布拟合分布函数的基础概念。 二、经验分布直观解释 在统计学中…...

使用Java实现Navicat密码的加密与解密

在日常开发过程中,我们有时需要处理各种软件保存的凭据信息,比如数据库连接密码等。这篇文章将介绍如何使用Java对Navicat保存的数据库密码进行加密和解密。 一、背景介绍 Navicat是一款强大的数据库管理工具,支持多种数据库系统。为了保护…...

怎么样进行定量分析

本文章将教会你如何对实验结果进行定量分析,其需要一定的论文基础,文末有论文撰写小技巧,不要看基础原理的人可以直接调到文章末尾。 一、什么是定量分析 定量分析是一种基于数据和数学模型的分析方法,它在众多领域中发挥着至关…...

python学习day2

今天主要学习了变量的数据类型,以及如何使用格式化符号进行输出。 一、认识数据类型 在python里为了应对不同的业务需求,也把数据分为不同的类型。 代码如下: """ 1、按类型将不同的变量存储在不同的类型数据 2、验证这些…...

FreeMarker

概述:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序…...

JDK 21新特性详解

JDK 21新特性详解:现代Java开发的重大更新 Java开发工具包(JDK)21作为最新的长期支持(LTS)版本,于2023年9月发布,带来了许多令人兴奋的新特性。作为Java开发者,了解这些新功能对于保持技术竞争力至关重要。本文将详细介绍JDK 21中…...

使用MCP驱动IDA pro分析样本

最近国外的牛人开发了一个ida pro的mcp server,项目的地址为mrexodia/ida-pro-mcp: MCP Server for IDA Pro,实现了通过自然对话来分析样本。 今天我们试用一下。 MCP Server for IDA Pro项目简介 这个mcp server提供下面这些工具,基本涵盖…...

Web前端开发:@media(媒体查询)

什么是媒体查询? 媒体查询是CSS3的一个功能,允许你根据设备的特性(如屏幕宽度、设备方向、分辨率等)应用不同的CSS样式。简单来说,就是让网页在不同设备上(手机、平板、电脑)自动调整布局和样式…...

psotgresql18 源码编译安装

环境: 系统:centos7.9 数据库:postgresql18beta1 #PostgreSQL 18 已转向 DocBook XML 构建体系(SGML 未来将被弃用)。需要安装 XML 工具链,如下: yum install -y docbook5-style-xsl libxsl…...

如何在VSCode中更换默认浏览器:完整指南

引言 作为前端开发者,我们经常需要在VSCode中快速预览HTML文件。默认情况下,VSCode会使用系统默认浏览器打开文件,但有时我们可能需要切换到其他浏览器进行测试。本文将详细介绍如何在VSCode中更换默认浏览器。 方法一:使用VSCo…...

Python Day26 学习

继续NumPy的学习 数组的索引 一维数组的索引 创建及输出 arr1d np.arange(10) # 数组: [0 1 2 3 4 5 6 7 8 9] arr1d array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 取出数组的第一个元素,最后一个元素 代码实现 arr1d[0] arr1d[-1] 取出数组中索引为3&#x…...

2025年PMP 学习二十一 14章 项目立项管理

2025年PMP 学习二十一 14章 项目立项管理 项目立项管理 项目建议 (Project Proposal)项目可行性分析 (Project Feasibility Analysis)项目审批 (Project Approval)项目招投标 (Project Tendering)项目合同谈判和签订 (Project Contract Negotiation and Signing) 文章目录 20…...

Ubuntu开机自启服务

一、准备启动脚本 在你的项目文件夹(例如 /home/ubuntu/Plant_Diease_Recongnization_Server_1)中创建一个启动脚本 run_ui_main.sh: #!/usr/bin/env bash # run_ui_main.sh:激活 yolov8 环境并启动 ui_main.py# 设置 Anaconda/…...

使用Docker部署React应用与Nginx

这个教程将帮助您使用Docker部署一个带有React的Nginx容器,并通过卷(volumes)将本地代码绑定到Docker容器中。这种设置非常适合开发环境,因为它允许您在本地编辑代码,而容器中的应用会自动更新。 步骤概述 创建Nginx配置文件创建Dockerfile…...

基于SpringBoot的小型民营加油站管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

Triton介绍和各平台支持情况分析

文章目录 💞Triton介绍🧠 Triton 是什么?🔍 Triton 的核心特点🚀 Triton 在 PyTorch 中的作用📦 Triton 的典型使用场景🧪 示例:Triton 编写的向量加法(GPU 并行&#xf…...

HTTPS核心机制拆解

目录 引言 HTTPS和HTTP的区别 常见加密方式 数据摘要 数字证书与数据签名 HTTPS请求过程 结语 引言 HTTPS是什么?是一个应用层协议,在HTTP协议的基础上引入了一层加密层。为什么需要HTTPS?答案是显而易见的,要加密&#xf…...

我的食物信使女友

第一章:初识那是一个普通的周三下午,阳光透过咖啡馆的玻璃窗洒在木质的桌子上,空气中弥漫着咖啡的香气和轻柔的爵士乐。我坐在角落的一个位置,手中捧着一本已经翻了几十页的小说,但心思却完全不在文字上。我的生活就像…...

【D1,2】 贪心算法刷题

文章目录 不同路径 II整数拆分 不同路径 II 初始化的时候不能整列初始化为1,因为如果有障碍物,后面的都不能到达 也不能整列初始化为0,因为状态转移的时候第一行第一列都没有检查,因此不能部分初始化 整数拆分 需要考虑几种情况…...

C++多态的详细讲解

【本节目标】 1. 多态的概念 2. 多态的定义及实现 3. 抽象类 4. 多态的原理 5. 单继承和多继承关系中的虚函数表 前言 需要声明的,本博客中的代码及解释都是在 vs2013 下的 x86 程序中,涉及的指针都是 4bytes 。 如果要其他平台下,部…...

UE5在Blueprint中判断不同平台

在Unreal Engine 5的蓝图中,可以通过以下方法判断当前运行的平台(如Android、Windows、iOS等),并根据平台执行不同的逻辑: 方法1:使用 Get Platform Name 节点 步骤: 在蓝图图表中右键点击&am…...

多卡跑ollama run deepseek-r1

# 设置环境变量并启动模型 export CUDA_VISIBLE_DEVICES0,1,2,3 export OLLAMA_SCHED_SPREAD1 # 启用多卡负载均衡 ollama run deepseek-r1:32b 若 deepseek-r1:32b 的显存需求未超过单卡容量(如单卡 24GB),Ollama 不会自动启用多卡 在run…...

MAC电脑中右键后复制和拷贝的区别

在Mac电脑中,右键菜单中的“复制”和“拷贝”操作在功能上有所不同: 复制 功能:在选定的位置创建一个与原始文件相同的副本。快捷键:CommandD用于在当前位置快速复制文件,CommandC用于将内容复制到剪贴板。效果&…...

打卡第二十二天

知识点回顾: LDA线性判别PCA主成分分析t-SNE降维 还有一些其他的降维方式,也就是最重要的词向量的加工,我们未来再说。 作业: 自由作业:探索下什么时候用到降维?降维的主要应用?或者让AI给你出…...

【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、InputSystem配置二、GameInput 游戏输入脚本1.实现思路2.完整代码三、Player 游戏人物移动脚本1.实现思路2.完整代码四、场景脚本设置1.组件设置五、问题解决1.人物一直下落2.人物跳跃时,…...

Python实现的在线词典学习工具

Python实现的在线词典学习工具 源码最初来自网络,根据实际情况进行了修改。 主要功能: 单词查询 通过Bing词典在线获取单词释义(正则提取网页meta描述),支持回车键快速查询 内置网络请求重试和异常处理机制 在线网页…...

软考 系统架构设计师系列知识点之杂项集萃(63)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(62) 第102题 以下关于系统性能评估方法的描述,错误的是()。 A. 指令执行速度法常用每秒百万次指令运算(MIPS)评估系统性能…...

python重庆旅游系统-旅游攻略

目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中&#xf…...

如何使用GIT管理项目代码

介绍 ​ Git是目前世界上最流行甚至最好的开源分布式版本控制系统,不论是很小的项目还是很大的项目,它都能有效并且高效的处理项目版本管理,初衷是为了帮助管理linux内核代码而开发的一个开放源码的版本控制软件。 GIT常用分支名称 分支分…...

Android 11.0 动画缩放默认值改为0.5的功能实现

1.前言 在11.0的系统rom定制化开发中,在关于设置动画的时候,系统有相关参数要求,设置默认的 动画缩放默认值等功能,来实现相关功能,接下来分析下相关的动画默认缩放值的设置功能实现 2.动画缩放默认值改为0.5的功能实现的核心类 frameworks/base/packages/SettingsProv…...

第35周Zookkeeper+Dubbo 面试题精讲

面试题精讲 一、算法面试答题思路 理解思路的重要性:算法面试比基础面试更复杂,需先想清楚思路,与面试官沟通确认题目条件(如数据范围、是否包含负数/零等),这有助于理清解题思路并展示技术实力。变量命名清晰:算法中变量命名要明确含义和范围,避免使用模糊的变量名,…...

Mergekit——任务向量合并算法Ties解析

Mergekit——高频合并算法 TIES解析 Ties背景Ties 核心思想具体流程总结 mergekit项目地址 Mergekit提供模型合并方法可以概况为三大类:基本线性加权、基于球面插值、基于任务向量,今天我们来刷下基于任务向量的ties合并方法,熟悉原理和代码。…...

初识 Redis

什么是 Redis? 在 Redis 官网中有介绍, Redis 就是一个存储空间,只不过这个存储空间是在内存上的,这也就代表存储在 Redis 中的数据访问起来会非常快,但也会有一个弊端,也就是内存资源是非常少的&#xff…...

python打卡训练营打卡记录day30

一、导入官方库 我们复盘下学习python的逻辑,所谓学习python就是学习python常见的基础语法学习你所处理任务需要用到的第三方库。 1.1标准导入:导入整个库 这是最基本也是最常见的导入方式,直接使用import语句。 # 方式1:导入整…...

FART 主动调用组件设计和源码分析

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 现有脱壳方法存在的问题 脱壳粒度集中在 DexFile 整体,当前对 apk 保护的粒度在函数粒度,这就导致了脱壳与加固的不对等,无…...

windows使用ollama部署deepseek及qwen

ollama 参考文档 ollama 官方文档 GitHub仓库 基础环境: NVIDIA 1660TI 6G 下载 ollma是一款开源工具,支持在本地计算机(无需联网)快速部署和运行大型语言模型(LLM),如 LLaMA、Mistral、G…...

【11408学习记录】考研英语辞职信写作三步法:真题精讲+妙句活用+范文模板

应聘信 英语写作2005年考研英语真题小作文写作思路第一段第二段妙句7 9妙句11补充3补充4 第三段 妙句成文 每日一句词汇第一步:找谓语第二步:断句第三步:简化主句原因状语从句 英语 写作 2005年考研英语真题小作文 Directions:​​ Two m…...

湖北理元理律师事务所:债务优化如何实现“减负不降质”?

债务压力下,如何在保障基本生活品质的同时科学规划还款,是许多债务人面临的现实难题。湖北理元理律师事务所通过多年实务经验,总结出一套“法律财务心理”的复合型解决方案。本文基于公开案例与法律框架,解析其服务逻辑中的可借鉴…...

python fastapi + react, 写一个图片 app

1. 起因, 目的: 上厕所的时候,想用手机查看电脑上的图片,但是又不想点击下载。此app 应运而生。 2. 先看效果 单击图片,能放大图片 3. 过程: 过程很枯燥。有时候, 有一堆新的想法。 但是做起来太麻烦,…...

Golang的Web应用架构设计

# Golang的Web应用架构设计 介绍 是一种快速、高效、可靠的编程语言,它在Web应用开发中越来越受欢迎。Golang的Web应用架构设计通常包括前端、后端和数据库三个部分。在本篇文章中,我们将详细介绍Golang的Web应用架构设计及其组成部分。 前端 在Golang的…...

软件设计师“UML”真题考点分析——求三连

一、考点分值占比与趋势分析 综合知识题分值统计表 年份考题数量分值分值占比考察重点2018222.67%类图关系、序列图消息流2019334.00%对象图特征、部署图辨析2020222.67%组件图特性、泛化关系2021334.00%聚合/组合区别、交互图应用2022222.67%用例图参与者、状态图转换202344…...

Nginx端口telnet不通排查指南

nginx已经配置server及端口20002,telnet不通:telnet 127.0.0.1 20002 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused 一、检查 systemctl status nginx.service nginx: [emerg] bind() to 0.0.0.0:20002 failed (13…...

C++ 函数对象、仿函数与 Lambda 表达式详解

C 函数对象、仿函数与 Lambda 表达式详解 在 C 中,函数对象(Function Object)、仿函数(Functor) 和 Lambda 表达式 是三种实现可调用行为的技术,它们在功能上类似,但语法和适用场景有所不同。 …...

More Effective C++:改善编程与设计(下)

目录 条款19:了解临时对象的来源 条款20:协助完成“返回值优化” 条款21:利用重载技术避免隐式类型转换 条款22:考虑以操作符复合形式(op)取代其独身形式(op) 条款23:考虑使用其他程序库 条款24:了解virtual functions、mul…...

C++:判断闰年

【描述】 判断某年是否是闰年。 【输入】 输入只有一行&#xff0c;包含一个整数a(0 < a < 3000) 【输出】 一行&#xff0c;如果公元a年是闰年输出Y&#xff0c;否则输出N 【样例输入】 2006 【样例输出】 N 【提示】 公历纪年法中&#xff0c;能被4整除的大多是闰年&am…...