Repolode
agronholm

agronholm/typeguard

Python 运行时类型检查库,依据 PEP 484 类型注解校验函数参数、返回值和任意对象。

Star
1,793
Fork
154
未关闭 Issue
59
最近提交
9天前

这是什么?

Typeguard 在程序运行时检查 Python 类型注解,可以发现 mypy 等静态检查工具无法覆盖的类型错误。它既可以当作功能更强的 isinstance(),支持任意类型提示,也可以替代 cast(),并真正校验传入的值。

自动检查有两种方式。@typechecked 装饰器会对单个函数重新编译,注入参数、返回值、带注解的局部变量赋值以及生成器的 yield 和 send 值的检查。导入钩子 install_import_hook() 则在模块导入时自动插桩,无需修改目标模块源码,但需要在目标模块加载前安装。

此外,check_argument_types() 和 check_return_type() 提供了更轻量、对调试器友好的方式,但对嵌套函数等动态定义的类型提示支持不够可靠。插桩方式要求模块的源代码可以访问。

核心功能

  • 01在运行时依据 PEP 484 注解检查函数参数和返回值。
  • 02可作为功能更强的 isinstance() 或 cast() 替代,支持任意类型注解。
  • 03通过 @typechecked 装饰器对单个函数进行插桩检查。
  • 04提供导入钩子,无需修改源码即可检查指定模块。
  • 05检查普通生成器和异步生成器的 yield 与 send 值。

适用场景

  • 在静态类型检查之外,为 Python 代码增加一层运行时类型保障。
  • 在数据边界处验证值的类型,弥补注解本身无法保证正确性的不足。
  • 排查只在运行时才暴露的类型不匹配问题。
  • 在测试或预发布环境中强制执行类型提示。

快速上手

  1. 1

    从 PyPI 安装该包

    pip install typeguard
  2. 2

    使用 check_type 在运行时校验值

使用前须知

  • README 未说明许可证;元数据中的许可证为 NOASSERTION,使用前请查看许可证文件。
  • 代码插桩要求被插桩模块的原始源代码可访问。
  • 导入钩子可能与其他导入钩子发生冲突。

收录于专题

标签

#python#type-checking#type-hints#pep-484#runtime-validation#testing

常见问题

typeguard 是什么?
Python 运行时类型检查库,依据 PEP 484 类型注解校验函数参数、返回值和任意对象。 Typeguard 在程序运行时检查 Python 类型注解,可以发现 mypy 等静态检查工具无法覆盖的类型错误。它既可以当作功能更强的 isinstance(),支持任意类型提示,也可以替代 cast(),并真正校验传入的值。
typeguard 可以免费使用吗?用的什么许可证?
typeguard 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
typeguard 还在维护吗?
活跃维护中。typeguard 最近一次提交是在 2026年10月29日。
typeguard 适合用来做什么?
在静态类型检查之外,为 Python 代码增加一层运行时类型保障。 在数据边界处验证值的类型,弥补注解本身无法保证正确性的不足。 排查只在运行时才暴露的类型不匹配问题。 在测试或预发布环境中强制执行类型提示。
typeguard 怎么安装和运行?
从 PyPI 安装该包: pip install typeguard 使用 check_type 在运行时校验值
在哪里获取 typeguard?
源代码和安装说明在 GitHub 上:https://github.com/agronholm/typeguard

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目