这是 类型标注 语法,英文叫 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 本身运行时不会严格执行这个类型。