首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的静态类型检查工具

Python中的静态类型检查工具
EN

Stack Overflow用户
提问于 2011-05-17 02:48:17
回答 7查看 16.9K关注 0票数 41

我正在使用一个现有的大型Python代码库,并希望开始添加类型注释,这样我就可以获得某种级别的静态检查。我在想象像二郎强谈,或者打字计划/球拍之类的东西。

我见过快速和脏的装饰器,它们根据函数参数和返回类型注释插入动态检查,但我正在寻找更健壮的东西,并在编译时执行检查。

现在有什么工具可以用于这类事情?我熟悉编译器和类型检查,如果它有良好的基础,我绝对愿意改进一个不完整的工具。

(注意:我不想讨论静态输入的利弊。)

编辑:一个示例:

代码语言:javascript
复制
def put(d, k, v):
   d[k] = v

我希望能够将put函数注释为具有put<K,V>(dict<K,V>, K, V) -> None类型。

UPDATE:新的佩普484 (2014年9月)为佩普484 3.5+中的静态类型和类型注释定义了一个标准。有一个名为形象化的类型检查工具,它与PEP 484兼容。

EN

回答 7

Stack Overflow用户

发布于 2011-05-17 02:50:27

编辑2016-11-11:刚刚使用形象化。类型提示可以逐步添加。在Python3源代码中,它验证标准的佩普484类型提示。类型仍然可以使用特殊注释在Python 2中表示。吉多喜欢它

这篇文章最初写于很久以前,在“记忆”成为一件事之前。我在下面保存了这篇文章的原始内容,尽管它并不十分准确。

原始帖子:

您可能想查看一下这个关于Python静态分析的相关StackOverflow文章中提到的一些项目。

总结如下:

  • 匹林特
  • PyFlakes
  • PyChecker

由于Python广泛使用鸭型,在其他语言中可能被称为“类型错误”的东西最终可能成为Python中的"object不支持Y方法“。

编辑2011-05-17:

我同意delnan的观点,即Python不可能使用静态类型,这显然是错误的。但由于我们的怀疑似乎并没有阻止你,我只能给你更多的信息,关于这个问题。我出席:

  • Python的类型推断的讨论。(其他链接来自这里。)
  • Guido关于添加可选静态类型的文章:第1部分第2部分
  • RPython是Python的一个子集,它有可能被静态地分析到可以进行某种形式的类型检查。
票数 17
EN

Stack Overflow用户

发布于 2014-09-07 21:35:06

你可能会发现形象化很有趣。它是Guido提议列入Python3.5

票数 11
EN

Stack Overflow用户

发布于 2013-07-01 09:39:09

看看这篇文章:PySonar:用于Python的静态分析器。PySonar是一种使用代码的抽象解释(部分执行)推断类型的工具。它查找程序的所有可能执行路径,并查找所有变量的所有可能类型。

基本上有三个版本的PySonar:

  • 开源Java (Jython索引器)
  • 封闭源Java (隐藏在谷歌中)
  • 开源Python (微型声纳)

其中没有一项(封闭源1除外)得到充分执行。但基本的想法是,你可以用它作为你工作的基础。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6025714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档