Python Typing Patterns 是一个关于现代 Python 类型提示与类型安全的技能,面向希望用类型注解提升代码安全性和可读性的开发者。它不是库或框架,而是一套可直接参考的注解写法与配置示例。
用途:为变量、函数签名和复杂数据结构添加类型提示,并通过 mypy、pyright 等类型检查器在静态阶段发现问题。适合作为 Python 类型标注的基础参考技能。
主要能力:
- 基础注解:变量(如 name: str)、函数签名(如 def greet(name: str, times: int = 1) -> str)、None 处理(如 str | None)。
- 集合类型:使用 collections.abc 中的 Sequence、Mapping、Iterable 提高灵活性,并支持嵌套类型(如 Matrix = list[list[float]])。
- 联合类型:3.10+ 的 X | None 与 str | int | float 写法,以及带默认值 None 的参数。
- TypedDict:定义固定键的字典,支持 Required、NotRequired 以及 total=False 表示全部可选。
- Callable:函数类型标注(如 Callable[[str, int], bool]),带关键字参数时建议改用 Protocol。
- 泛型:TypeVar 及带 bound 的 TypeVar,用于编写通用函数(如 first、average)。
- Protocol:结构化类型,任何具备 read() 方法的对象都可传入(文件、BytesIO、自定义类)。
- 类型收窄:TypeGuard 在运行时检查后让检查器识别更具体类型。
- Literal 与 Final:限定取值(如 Literal["read", "write", "append"])与不可重新赋值的常量。
- 快速参考表:列出常见类型及其适用场景。
- 类型检查命令:mypy src/ --strict、pyright src/,以及 pyproject.toml 中 [tool.mypy] 的 strict 与 python_version 配置示例。
使用方式:按文档中的示例为代码添加注解;在项目中运行 mypy 或 pyright 检查;参考 ./references/ 下的进阶文档(泛型进阶、Protocol 模式、类型收窄、mypy 配置、运行时校验、重载),使用 ./scripts/check-types.sh 运行常用检查,或采用 ./assets/pyproject-typing.toml 作为推荐配置。
适用场景:日常 Python 项目、库开发、需要静态类型保障的代码库,以及使用 pytest、异步、FastAPI、SQLAlchemy 等相关技能时的类型基础。
限制:文中说明这是无前置要求的基础技能;未提供收费、价格、平台支持范围等信息。部分写法(如 X | None)依赖 Python 3.10+。