news 2026/6/14 5:40:25

[智能体-327]:Annotated 语法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[智能体-327]:Annotated 语法详解

Annotated类型注解增强工具,给已有类型附加元数据、描述、校验规则、文档额外信息,不改变原类型本身。

一、基础导入

python

运行

# Python 3.9+ 标准库 from typing import Annotated

二、核心语法

python

运行

Annotated[类型, 元数据1, 元数据2, ...]
  • 第一个参数:原生类型(int/str/list/ 自定义类等)
  • 后面所有参数:任意元数据(字符串、对象、函数、枚举等)
  • 运行时不强制校验仅存储附加信息,由第三方库(FastAPI、Pydantic、mypy)解析使用

三、基础示例

1. 加文字描述(最常用)

python

运行

from typing import Annotated # 给 int 附加说明 Age = Annotated[int, "用户年龄,范围 0-120"] def get_age() -> Age: return 25 # 本质还是 int print(type(get_age())) # <class 'int'>

2.多个元数据叠加

python

运行

Username = Annotated[ str, "登录用户名", {"min_length": 4, "max_length": 20}, # 字典规则 "不可包含特殊字符" ]

四、实战场景(主流用法)

场景 1:FastAPI 接口参数(高频)

搭配参数校验、说明、示例

python

运行

from fastapi import FastAPI from typing import Annotated app = FastAPI() @app.get("/user") def read_user( age: Annotated[int, "用户年龄", 0, 120] ): return {"age": age}

场景 2:Pydantic 数据模型校验

结合Field做约束:

python

运行

from pydantic import BaseModel, Field from typing import Annotated # 类型 + 校验规则 + 描述 Score = Annotated[float, Field(ge=0, le=100, description="考试分数")] class Student(BaseModel): name: str score: Score

场景 3:类型别名复用

统一规范全局类型:

python

运行

from typing import Annotated Phone = Annotated[str, "手机号,11位数字"] Email = Annotated[str, "标准邮箱格式"] class User: phone: Phone email: Email

五、取值元数据(运行时读取附加信息)

__metadata__属性获取:

python

运行

from typing import Annotated Info = Annotated[int, "数值类型", 100] # 取出所有附加元数据 print(Info.__metadata__) # ('数值类型', 100) # 取出基础类型 print(Info.__origin__) # <class 'int'>

六、版本说明

  1. Python 3.9:正式加入typing.Annotated
  2. Python 3.8 及以下:需安装typing_extensions

    bash

    运行

    pip install typing-extensions
    导入改为:

    python

    运行

    from typing_extensions import Annotated

七、总结口诀

  • 格式:Annotated[原类型, 附加信息...]
  • 作用:给类型打标签、加规则、写文档
  • 本质:原类型不变,元数据供框架解析
  • 主力场景:FastAPI、Pydantic、静态类型文档
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 23:22:41

稀疏与最大熵表示的自监督学习框架解析

1. 稀疏与最大熵表示的自监督学习框架解析在深度学习领域&#xff0c;自监督学习已经成为减少对人工标注依赖的关键技术路径。传统方法通常依赖于对比学习或重建损失&#xff0c;但这些方法往往忽视了表示的两个关键特性&#xff1a;稀疏性和最大熵。稀疏表示能够提高模型的解释…

作者头像 李华
网站建设 2026/6/13 23:22:39

智能游戏插件HunterPie:怪物猎人世界终极战斗助手完全指南

智能游戏插件HunterPie&#xff1a;怪物猎人世界终极战斗助手完全指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/HunterPi…

作者头像 李华
网站建设 2026/6/13 22:03:18

从GIS学生到项目实战:我的Cesium 1.91学习笔记与避坑全记录

从GIS学生到项目实战&#xff1a;我的Cesium 1.91学习笔记与避坑全记录第一次打开Cesium的3D地球时&#xff0c;那种指尖轻触就能旋转星球的震撼感&#xff0c;让我这个GIS专业学生彻底迷上了这个开源框架。但随之而来的坐标转换报错、地图偏移问题和莫名其妙的CallbackPropert…

作者头像 李华
网站建设 2026/6/13 9:21:39

告别串口打印!用SEGGER RTT调试STM32浮点运算的完整指南(含常见坑点)

高效调试利器&#xff1a;SEGGER RTT在STM32浮点运算中的实战应用调试嵌入式系统时&#xff0c;传统串口输出就像用打字机写代码——缓慢、笨重且占用宝贵资源。当项目涉及大量浮点运算时&#xff08;比如传感器数据处理、机器学习推理或运动控制算法&#xff09;&#xff0c;这…

作者头像 李华