pytype-用于检查并推断Python代码的类型,无需类型注释

pytype是用于检查并推断Python代码的类型的python库,无需类型注释。Pytype可以:

  • 清除纯Python代码,标记常见错误,例如拼写错误的属性名称,错误的函数调用等等,甚至跨越文件边界。

  • 强制执行用户提供的类型注释。对于pytype,注释是可选的,但它将检查并在存在的地方应用它们。

  • 在独立文件(“ pyi文件”)中生成类型注释,可以使用提供的merge-pyi工具将其合并回Python源 。

Pytype是静态分析器;它不执行运行的代码。

Google的成千上万个项目都依赖pytype来保持其Python代码的类型正确且无错误。

pytype与其他类型检查器有何不同?

Pytype使用推理而不是渐进式输入。这意味着即使代码上没有类型提示,它也会推断代码的类型。因此,它可以检测到类似这样的代码的问题,而其他类型检查器可能会错过这些问题:

def f():        return "PyCon"def g():        return f() + 2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]

Pytype是宽容而不是严格。这意味着它允许所有在运行时成功且不与注释冲突的操作。例如,此代码将在pytype中安全通过,但在其他类型检查器中失败,后者将在变量初始化后立即将类型分配给变量:

from typing import Listdef get_list() -> List[str]:        lst = ["PyCon"]        lst.append(2019)        return [str(x) for x in lst]# mypy: line 4: error: Argument 1 to "append" of "list" has# incompatible type "int"; expected "str"

快速开始

要快速开始对文件或目录进行类型检查,请使用pip安装pytype或者通过网盘下载pytype的源代码文件,并替换file_or_directory为您的输入:

pip install pytypepytype file_or_directory

要在整个软件包上设置pytype,请将以下内容添加到setup.cfg软件包上方目录中的文件中,并替换package_name为软件包名称:

[pytype]inputs = package_name

现在,您可以运行no-argument命令pytype以对软件包进行类型检查。将pytype添加到自动化测试中也很容易;请参见 在Travis上运行pytype的GitHub项目的示例。

最后,pytype生成推断类型信息的文件,默认情况下位于.pytype/pyi。您可以使用以下信息对相应的源文件进行类型注释:

merge-pyi -i <filepath>.py .pytype/pyi/<filename>.pyi
(0)

相关推荐

  • typing库:让你的代码阅读者再也不用猜猜猜

    Python以其简洁的代码而闻名于世.除了缩进之外,代码样式和文档主要取决于编写应用程序的开发人员的习惯,这可能导致一些混乱,产生难以理解的代码.而这主要是因为Python是一种动态类型语言,请看以下 ...

  • python2和3编码

    作用:python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b""前缀代表的就是bytes python2.x里, b前缀没什 ...

  • 小白必学教程:Python变量的定义和使用

    所有的一种编程语言都需要处理数据,如数字.字符串.字符等等,我们可以直接使用数据,或者把它保存到一个变量中,以方便以后使用. 变数(Variable)可看作是一个专门用于在程序中"装入&qu ...

  • python语法第二课《程序中的注释》

    https://m.toutiao.com/is/J7gGBCJ/ 看完美女后学习! 刚开始学程序时,就要有一个良好的编程习惯~写注释!写注释!写注释! 注释就是一种说明,用一种直白的方法告诉其他人你 ...

  • Python新手教程:变量类型

    当在Python中使用变量时,不需要事先声明它的类型,并且变量不会出错,这在以前学习静态语言的同学看来是不可思议的,他们将对「Python如何知道变量是什么」等诸如此类的问题,这样的问题已经进入了「动 ...

  • 危险的转变:Python正在从简明转向臃肿,从实用转向媚俗

    作者 | 天元浪子 头图 | CSDN 出品 | CSDN 博客 国庆长假期间,Python3.9正式推出,各大IT平台和众多自媒体纷纷火力全开,热推Python3.9的新增特性.然而,除了媒体的自娱 ...

  • Python 代码学习,用于股票分析

    最近,一位常年研究股票系统的开发者 pythonstock 用 Python 写了一个股票分析系统,发布数天就获得了不少关注. 于是我们就推荐给大家,既能学习 python 又能练习炒股.但正如项目作 ...

  • Python代码块缩进的讲解

    https://www.ixigua.com/6729075318239265287

  • 最基础的Python知识学会这些已足够你开始写Python代码了

    https://m.toutiao.com/is/eD2TWLh/ (Python不用大括号标识代码结构使用空白符和缩进来标识代码块)上述最后两行代码就是while循环体,就是因为它们紧随while语 ...

  • 如何写出清晰又优雅的Python代码?我们给你这26条建议

    大数据DT 提供大数据.AI等领域干货学习资源的「宝藏号」,跟50万技术人共同成长,一起玩转大数据.Python.数据分析.数据科学.人工智能!还会有各种好玩又奇葩的数据解读,边学习边吃瓜! 538篇 ...

  • 涨见识了,在终端执行 Python 代码的 6 种方式!

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  • 30行Python代码实现蚂蚁森林自动偷能量(附源码)

    虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋 ...

  • 什么,3行Python代码就能获取海量数据?

    Python爬虫与数据挖掘 1周前 以下文章来源于法纳斯特 ,作者小F 本文转载自公众号[法纳斯特],详情可以点击上方卡片,关注该公众号,获取更多好文推荐. 一谈起数据分析,首先想到的就是数据,没有数 ...

  • 写好 Python 代码的几条重要技巧

    作者:韦世东 来源:NightTeam 程序设计的好与坏,早在我们青葱岁月时就接触过了,只是那是并不知道这竟如此重要.能够立即改善程序设计.写出"好"代码的知识有以下几点: ·面向 ...

  • 微软:VS Code是性能和体验最好的Python 代码编辑器

    微软已发布2021年5月针对 Visual Studio Code 的 Python 扩展更新,此次更新引入了 Pylance 作为 Python 的默认语言服务器和用于 Python 脚本的自动重载 ...