类型标注/type annotation

这是 类型标注 语法,英文叫 type annotation。

py 复制代码
user: User = {"name": "Alice", "age": 20}

可以拆成三部分:

复制代码
变量名 : 类型 = 值

也就是:

py 复制代码
user : User = {"name": "Alice", "age": 20}

意思是:

创建一个变量 user,它的类型应该是 User,值是这个字典。

这里的 User 如果是前面定义的 TypedDict:

py 复制代码
from typing import TypedDict

class User(TypedDict):
    name: str
    age: int

那这句:

py 复制代码
user: User = {"name": "Alice", "age": 20}

就是在告诉 Python / IDE / 类型检查器:

user 应该是一个符合 User 结构的字典,也就是必须有 name: str 和 age: int。

它和普通写法相比:

py 复制代码
user = {"name": "Alice", "age": 20}

运行时效果基本一样。区别是加了类型信息。

比如你写错:

py 复制代码
user: User = {"name": "Alice", "age": "20"}

Python 运行时通常不会报错,但 VS Code、PyCharm、Pyright、mypy 这类工具会提醒你:

py 复制代码
age 应该是 int,但你给了 str

再比如少字段:

py 复制代码
user: User = {"name": "Alice"}

类型检查器也会提醒你:缺少 age。

这个语法也可以用于普通类型:

py 复制代码
name: str = "Alice"
age: int = 20
price: float = 9.99
is_active: bool = True
names: list[str] = ["Alice", "Bob"]
scores: dict[str, int] = {"math": 90, "english": 85}

还有一种只声明、不赋值的写法:

py 复制代码
user: User

意思是:我先声明这里会有一个 User 类型的变量,但还没有赋值。实际初学时少用这个,容易踩"变量还没赋值"的坑。

重点记住一句:

py 复制代码
user: User = ...

不是"把 User 赋值给 user",而是"给变量 user 加一个类型说明"。

它主要帮助你、IDE、类型检查器读懂代码,Python 本身运行时不会严格执行这个类型。

相关推荐
实名上网宋凯宣1 天前
Django
后端·python·django
如若1231 天前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
砚底藏山河1 天前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新1 天前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
薛定谔的猫-菜鸟程序员1 天前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
Ramble_Naylor1 天前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
Allen_LVyingbo1 天前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang1 天前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
我命由我123451 天前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂1 天前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛