Python类型注解不强制运行时检查,但提升可读性、IDE提示和静态检查;支持基础类型、泛型(typing模块或3.9+内置)、Optional、Union、变量/类属性注解,并需配合mypy等工具发挥效用。
Python类型注解不是运行时强制要求,但能显著提升代码可读性、便于IDE智能提示、支持静态类型检查工具(如mypy),是现代Pytho
n开发的重要实践。
在函数参数和返回值后用冒号加类型标注,语法简洁直观:
name应为字符串,返回值也是字符串int、float、bool、list、dict、tuple等list、dict等泛型需配合typing模块或Python 3.9+的内置泛型(如list[str])处理容器、可选值、联合类型时,需要更精确的表达:
def process(items: List[str]) -> Dict[str, int]: —— 明确列表元素和字典键值类型def find_user(user_id: int) -> Optional[str]: —— 表示可能返回字符串或None
def parse(value: Union[int, str]) -> bool: —— 接受多种类型之一(Python 3.10+ 可写作 int | str)类型注解不仅限于函数,也适用于变量声明和类成员:
username: str = "alice" —— 模块级或函数内变量可直接标注class User:name: strage: int = 0 —— 类属性类型清晰,支持数据类(@dataclass)自动推导from typing import ClassVar 用于标记类变量:version: ClassVar[str] = "1.0"
类型注解默认不参与运行,但配合工具才能发挥最大价值:
mypy:执行mypy your_script.py检测类型错误__future__ import annotations(Python 3.7+)可延迟求值注解,避免前向引用问题def f(x: "MyClass") -> "List[int]":),适合循环引用场景