Python类型注解不强制运行时检查,但提升可读性、IDE提示和静态检查;支持基础类型、泛型(typing模块或3.9+内置)、Optional、Union、变量/类属性注解,并需配合mypy等工具发挥效用。

Python类型注解不是运行时强制要求,但能显著提升代码可读性、便于IDE智能提示、支持静态类型检查工具(如mypy),是现代Python开发的重要实践。
基础类型注解写法
在函数参数和返回值后用冒号加类型标注,语法简洁直观:
-
def greet(name: str) -> str: 表示参数
name应为字符串,返回值也是字符串 - 支持内置类型:
int、float、bool、list、dict、tuple等 - 注意:
list、dict等泛型需配合typing模块或Python 3.9+的内置泛型(如list[str])
常用泛型与复杂类型
处理容器、可选值、联合类型时,需要更精确的表达:
- from typing import List, Dict, Optional, Union(Python
-
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: str
age: int = 0—— 类属性类型清晰,支持数据类(@dataclass)自动推导 -
from typing import ClassVar用于标记类变量:version: ClassVar[str] = "1.0"
运行时兼容性与工具配合
类型注解默认不参与运行,但配合工具才能发挥最大价值:
- 安装
mypy:执行mypy your_script.py检测类型错误 - VS Code + Pylance 或 PyCharm 默认识别类型注解,提供精准跳转和补全
- 使用
__future__ import annotations(Python 3.7+)可延迟求值注解,避免前向引用问题 - 函数内注解支持字符串字面量(如
def f(x: "MyClass") -> "List[int]":),适合循环引用场景










