2026/3/29 7:11:47
网站建设
项目流程
网站计数代码,新浪网站开发语言,网站页面优化工具,房地产网站加盟from typing import Literal 是 Python 3.8 的标准库导入#xff0c;它引入了一个“字面量类型”#xff08;Literal#xff09;的概念#xff0c;用来把类型检查精确到具体的值#xff0c;而不仅仅是“str / int / bool”这类宽泛类型。1.基础语法from typing import Lit…from typing import Literal 是 Python 3.8 的标准库导入它引入了一个“字面量类型”Literal的概念用来把类型检查精确到具体的值而不仅仅是“str / int / bool”这类宽泛类型。1.基础语法from typing import Literal Mode Literal[auto, none, required] # 变量 Mode 只能是字符串 auto、none 或 required传别的值就报错。2.在函数签名里怎么用def set_tool_choice(mode: Literal[auto, none, required]) - None: ...set_tool_choice(auto) # ✅ 通过 set_tool_choice(required) # ✅ 通过 set_tool_choice(REQUIRED) # ❌ 大小写不一致静态检查器会标红3.运行时行动Literal 本身不会在运行时拦截非法值它的威力体现在写代码阶段就能发现拼写错误、避免“魔法字符串”满天飞。如果你需要运行期也校验可以搭配 pydantic 或 enumfrom pydantic import BaseModel, Field class Request(BaseModel): tool_choice: Literal[auto, none, required] auto4.与 Union 区别# 旧写法宽泛 Mode Union[str, int] # 任何 str / int 都合法 # 新写法精确 Mode Literal[auto, none, required] # 只有这三个字符串合法一句话总结Literal就是“把允许的值写进类型系统”让 IDE 和静态检查器帮你提前发现手滑拼错、传错参数写接口、写配置枚举时特别香。