我正在使用现有的大型 Python 代码库,并希望开始添加类型注释,以便进行某种程度的静态检查。我在想像Erlang、Strongtalk或Typed Scheme/Racket之类的东西。
我见过快速而肮脏的装饰器,它们根据函数参数和返回类型注释插入动态检查,但我正在寻找更健壮并在编译时执行检查的东西。
现在有哪些工具可用于此类事情?我熟悉编译器和类型检查,如果它有良好的基础,我肯定愿意改进一个不完整的工具。
(注意:我对讨论静态类型的优缺点不感兴趣。)
编辑:一个例子:
def put(d, k, v):
d[k] = v
我希望能够将该put
函数注释为具有 type put<K,V>(dict<K,V>, K, V) -> None
。
更新:新的PEP 484(2014 年 9 月)定义了 Python 3.5+ 中静态类型和类型注释的标准。有一个名为mypy的类型检查工具与 PEP 484 兼容。