惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Martin Fowler
Martin Fowler
雷峰网
雷峰网
IT之家
IT之家
小众软件
小众软件
M
MIT News - Artificial intelligence
博客园 - 聂微东
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
C
Check Point Blog
云风的 BLOG
云风的 BLOG
腾讯CDC
H
Help Net Security
Y
Y Combinator Blog
I
InfoQ

卡卡罗特

eino实现Agent eino整合RAG eino整合Tools go整合向量数据库ChromaDB langchainjs langchain实现Agent ollama调用各大模型 spring-ai 自定义一个MCP openCV初体验 01-Bing每日一图接口 02-腾讯API高清QQ头像https调用接口 01-获取指定网站的所有的链接 context.Context是什么? RWMutex读写锁 SyncMap的使用 defer的使用 go字符串工具类 go生成UUID go正则表达式 最后代码 | 卡卡罗特 swagger文档 | 卡卡罗特 react脚手架开发 | 卡卡罗特 langchain实现Agent | 卡卡罗特 03.python列表集合元组字典 | 卡卡罗特 python依赖打包 | 卡卡罗特 python的异步 | 卡卡罗特 python的生成器 | 卡卡罗特 eino整合Tools | 卡卡罗特 eino实现Agent | 卡卡罗特
python的对象增强 | 卡卡罗特
2026-05-28 · via 卡卡罗特

python的对象增强 ​

特性TypedDictPydantic (BaseModel)
核心作用静态类型提示(写代码时防错)运行时数据校验与转换(跑代码时防错)
生效时间仅在代码编写/静态检查阶段生效在程序实际运行时生效
数据校验❌ 无(运行时传错数据也不会报错)✅ 强校验(数据不对会直接抛出异常)
数据转换❌ 无✅ 自动转换(如把字符串 "18" 转为数字 18
底层本质依然是普通的 Python 字典(dict)继承自 BaseModel 的专用对象

TypedDict ​

python

from typing import TypedDict

class UserDict(TypedDict):
    id: int
    name: str

# 在写代码时,IDE 会提示你字典里该有哪些键
user_data: UserDict = {"id": 1, "name": "Alice"} 

# ⚠️ 注意:即使你传了错误的数据,程序在运行时也不会报错!
bad_user: UserDict = {"id": "错误地传了字符串", "name": "Bob"} 
print(bad_user) # 正常运行,打印出字典

Pydantic ​

py

from pydantic import BaseModel

class UserModel(BaseModel):
    id: int
    name: str

# ✅ 正常数据,顺利通过
user = UserModel(id=1, name="Alice")
print(user) # 输出: id=1 name='Alice'

# 🔄 自动转换:Pydantic 会把字符串 "2" 自动转成整数 2
converted_user = UserModel(id="2", name="Bob") 
print(converted_user.id, type(converted_user.id)) # 输出: 2 <class 'int'>

# 🛑 严格拦截:如果数据实在无法转换,直接报错,阻止程序带病运行
try:
    bad_user = UserModel(id="这不是数字", name="Charlie")
except Exception as e:
    print("数据校验失败:", e)