AI和Python------别再写 list[str] = [] 了!Pydantic 可变默认值这个坑,90% 的人都踩过
一个真实场景API 传参引发的幽灵数据先看一段再普通不过的代码——这种 Filter 类在 FastAPI 接口和 Service 层传参中随处可见from datetime import date from pydantic import Field class RetrievalFilters(APIModel): document_ids: list[str] Field(default_factorylist) topic: str | None None effective_before: date | None None字段说明字段作用document_ids限制只从指定文档中检索topic限制只检索某个主题effective_before限制只检索某个日期之前生效的政策你可能会问document_ids那行为什么不直接写成list[str] []更简洁啊答案就四个字可变默认值。两种写法对比from pydantic import BaseModel, Field # 写法1推荐 class ModelA(BaseModel): document_ids: list[str] Field(default_factorylist) # 写法2不推荐 class ModelB(BaseModel): document_ids: list[str] []看起来功能一样但底层机制完全不同。[]的致命问题所有实例共享同一个列表[]是在类定义阶段就创建的一个全局列表对象所有实例共享同一个 list。用原生 Python 类来演示这个 bugclass ModelB: document_ids: list[str] [] b1 ModelB() b2 ModelB() b1.document_ids.append(doc1) print(b1.document_ids) # [doc1] print(b2.document_ids) # [doc1] ❗ b2 也被修改了共享同一个列表b1 往列表里加了个doc1结果 b2 的列表里也出现了doc1——这就是经典的可变默认值共享 bug。放到实际业务里如果两个并发请求各自实例化RetrievalFilters请求 A 往document_ids里 append 了文档 ID请求 B 就会莫名其妙地多出 A 的文档限制。数据串了排查起来要命。Pydantic 帮你兜了一层底但别依赖这个魔法好消息是Pydantic v1/v2 会对直接写[]的字段做特殊处理——底层自动翻译成default_factorylist所以实际不会发生跨实例污染。但这不意味着你可以放心写[]原因有三1. 可读性差团队困惑同事看到list[str] []第一反应是这是不是会有共享可变对象的 bug 他得去翻 Pydantic 源码确认白白浪费时间。而Field(default_factorylist)一眼看懂意图——每次实例化都生成新列表。2. 复制到 dataclass 直接炸如果你把这段代码复制到 Python 标准库的dataclass里class ModelB: document_ids: list[str] [] b1 ModelB() b2 ModelB() b1.document_ids.append(doc1) print(b1.document_ids) # [doc1] print(b2.document_ids) # [doc1] ❗ b2 也被修改了共享同一个列表原生 dataclass没有Pydantic 的魔法保护[]一定会导致跨实例共享。Python 解释器甚至会直接抛出ValueError: mutable default ... is not allowed。3. Pydantic 版本迁移风险Pydantic v1 到 v2 经历了大量底层重写。虽然 v2 目前帮你兜底了但未来版本行为是否会变化谁也说不准。显式写default_factory才是最安全的做法。正确写法总结场景写法说明Pydantic 模型推荐list[str] Field(default_factorylist)可读性最好意图清晰复制到 dataclass 也不会出错Pydantic 模型不推荐list[str] []虽然能跑但团队阅读会疑惑且有迁移风险标准库 dataclassfield(default_factorylist)绝对禁止直接写[]必须用field(default_factorylist)所有可变容器类型list/dict/set都适用这条规则# Pydantic tags: list[str] Field(default_factorylist) config: dict[str, Any] Field(default_factorydict) ids: set[int] Field(default_factoryset) # dataclass from dataclasses import dataclass, field dataclass class MyModel: tags: list[str] field(default_factorylist) config: dict field(default_factorydict)一句话记住可变默认值永远用 factory。Pydantic 帮你兜底是情分dataclass 不兜是本分。显式写default_factory才是对所有人和所有场景都负责的写法。如果这篇文章帮到了你点个赞收藏一下下次写模型类的时候翻出来看一眼省得踩坑。有问题欢迎评论区交流

相关新闻

无线传感器网络轻量级加密算法能效实测与选型指南

无线传感器网络轻量级加密算法能效实测与选型指南

1. 项目概述:当无线传感器网络遇上轻量级加密在物联网和工业物联网的浪潮下,无线传感器网络(WSN)早已不是什么新鲜概念。从农田里的土壤温湿度监测,到工厂车间里的设备振动分析,再到城市里的智能路灯控制&a…

2026/8/13 10:17:00 阅读更多 →
Linux企业级权限管理:SELinux与AppArmor实战指南

Linux企业级权限管理:SELinux与AppArmor实战指南

1. Linux权限管理的企业级挑战 在SRE和DevOps的日常工作中,权限管理就像给不同部门员工发放不同级别的门禁卡。我们经常遇到这样的场景:开发团队需要临时访问生产环境日志排查问题,但又不希望他们拥有完整的root权限;自动化部署工…

2026/8/13 10:17:00 阅读更多 →
2026干线工程高稳定性光纤熔接机品牌盘点:进口与国产各有哪些值得关注

2026干线工程高稳定性光纤熔接机品牌盘点:进口与国产各有哪些值得关注

先说结论:这是一份按事实分档的品牌盘点,不是排名。进口阵营值得关注的是藤仓、住友电工两家老牌厂商,古河电工在稳定性方向也有一席之地;国产阵营中,灼识科技(干线产品线完整、售后条款明确)和…

2026/8/13 10:17:00 阅读更多 →

最新新闻

解决d3dcompiler_39.dll丢失问题的完整指南

解决d3dcompiler_39.dll丢失问题的完整指南

1. 问题现象与背景解析 当你在运行某个游戏或专业软件时突然弹出"d3dcompiler_39.dll丢失"的错误提示,这种情况通常发生在Windows系统环境下。这个dll文件是Direct3D编译器组件的一部分,属于Microsoft DirectX的底层图形接口文件。它主要负责将…

2026/8/13 11:07:23 阅读更多 →
木材缺陷识别 深度学习目标检测训练木材缺陷检测数据集 通过训练出的木材板材缺陷数据集的权重 推理识别干节 健全节 边界 小节 裂纹 波纹

木材缺陷识别 深度学习目标检测训练木材缺陷检测数据集 通过训练出的木材板材缺陷数据集的权重 推理识别干节 健全节 边界 小节 裂纹 波纹

使用 YOLOv8 系列模型进行目标检测任务训练 深度学习目标检测训练木材缺陷检测数据集 通过训练出的木材板材缺陷数据集的权重 推理识别干节 健全节 边界 小节 裂纹 波纹 文章目录使用 YOLOv8 系列模型进行目标检测任务训练 深度学习目标检测训练木材缺陷检测数据集 通过训练出的…

2026/8/13 11:07:23 阅读更多 →
ncmdumpGUI:网易云音乐NCM文件转换终极指南,免费解锁你的音乐自由

ncmdumpGUI:网易云音乐NCM文件转换终极指南,免费解锁你的音乐自由

ncmdumpGUI:网易云音乐NCM文件转换终极指南,免费解锁你的音乐自由 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否在网易云音乐下…

2026/8/13 11:07:23 阅读更多 →
从零到一:3分钟跑通douyin-downloader,抖音视频一键去水印批量下载

从零到一:3分钟跑通douyin-downloader,抖音视频一键去水印批量下载

从零到一:3分钟跑通douyin-downloader,抖音视频一键去水印批量下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and…

2026/8/13 11:07:23 阅读更多 →
AI提效实战:从代码开发到内容创作,实测效率提升26%-80%

AI提效实战:从代码开发到内容创作,实测效率提升26%-80%

1. 项目概述:当AI提效从口号变成账单 “AI提效”这四个字,现在几乎成了所有技术分享、产品发布和职场汇报里的标配。但每次听到,我心里都会打个问号:提效?提了多少效?是省了10分钟,还是省了10个…

2026/8/13 11:07:23 阅读更多 →
还在为 Windows 和 Office 激活反复折腾?这个免安装脚本三步帮你一键搞定

还在为 Windows 和 Office 激活反复折腾?这个免安装脚本三步帮你一键搞定

还在为 Windows 和 Office 激活反复折腾?这个免安装脚本三步帮你一键搞定 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 一个大多数人都遇到过的尴尬场景 先讲个真实发生的事。同事…

2026/8/13 11:06:22 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →