IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 11.5K Star,一个开源的 Python 静态类型检查库 -> 正文阅读

[开发工具]11.5K Star,一个开源的 Python 静态类型检查库

Mypy 是 Python 的静态类型检查库,可以向 Python 程序添加类型注解,并用 mypy 对它们进行静态类型检查,无需运行代码即可发现程序中潜在的错误。还可以加入到 git hook 中,实现在提交代码前自动检查。Mypy 具有强大且易于使用的类型系统,具有现代功能,如类型推断、泛型、可调用类型、元组类型、联合类型和结构子类型。

使用 Python 3 注解语法(PEP 484 和 PEP 526)或 Python 2 基于注释的注解,能够有效的注释代码并使用 mypy 检查代码中的常见错误。

可以在程序中混合使用动态类型和静态类型,对于遗留代码,如果不方便使用静态类型,可以随时回退到动态类型。如:

from typing import Iterator

def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
        yield a
        a, b = b, a + b

对于 Python 2.7,标准注解写成注释:

def is_palindrome(s):
    # type: (str) -> bool
    return s == s[::-1]

项目地址:

https://github.com/python/mypy

快速开始

使用 pip 进行安装:

$ python3 -m pip install -U mypy

如果要运行最新版本的代码,可以从 git 进行安装:

$ python3 -m pip install -U git+git://github.com/python/mypy.git

安装完成后,可以使用以下命令对应用程序的静态类型进行类型检查:

$ mypy PROGRAM

运行测试的基本方法:

$ pip3 install -r test-requirements.txt
$ python2 -m pip install -U typing
$ ./runtests.py

IDE 集成

  • Vim
  1. 使用 Syntastic:在 ~/.vimrc 添加 let g:syntastic_python_checkers=[‘mypy’]

  2. 使用 ALE:在 ~/vim/ftplugin/python.vim 中添加配置明确启用,let b:ale_linters = [‘mypy’]

  • Emas,使用Flycheck和Flycheck-mypy

  • Sublime Text,使用 SublimeLinter-contrib-mypy

  • Autom,使用 linter-mypy

  • PyCharm,使用 mypy 插件

  • VS Code,已提供对 mypy 的集成

  • 可以加入到 git hook 中,实现在提交代码前自动检查

常用命令

对指定内容进行检查

$ mypy foo.py bar.py some_directory

该命令是递归检查的,会检查目录下对应的所有指定文件。Mypy 还允许以其他方式检查指定代码:

-m MODULE, --module MODULE: 对提供的模块进行类型检查,不会递归地检查
-p PACKAGE, --package PACKAGE: 对提供的包进行类型检查,会递归检查
-c PROGRAM_TEXT, --command PROGRAM_TEXT:将提供的字符串作为程序进行检查
--exclude:递归发现要检查的文件时忽略指定的文件名、目录名和路径

配置文件

--config-file CONFIG_FILE:从给定文件读取配置。覆盖 mypy 的内置默认值

无类型定义和调用

--disallow-untyped-calls:有类型注解的函数调用没有注解定义的函数时报告错误
--disallow-untyped-defs,没有类型注解的函数定义时报告错误
--disallow-incomplete-defs,遇到部分注解不完整的函数定义时报告错误
--disallow-untyped-decorators,带有类型注解的函数用没有注解的装饰器装饰时报告错误

配置错误信息

--show-error-context:在所有错误之前带有解释错误上下文的消息
--show-column-numbers:显示行号
--show-error-codes:显示错误码
--pretty:格式化错误消息,自动换行、显示源代码片段和显示错误位置标记等
--show-absolute-path:显示文件的绝对路径

错误信息生成

--any-exprs-report DIR:在指定目录中生成一个文本文件报告
--cobertura-xml-report DIR:在指定目录中生成 Cobertura XML 类型检查报告,必须安装 lxml 库才能生成此报告
--html-report / --xslt-html-report DIR:在指定目录中生成 HTML 类型检查报告,必须安装 lxml 库才能生成此报告
--lineprecision-report DIR:在指定目录中生成一个纯文本文件报告,其中包含每个模块的类型检查行数等统计信息

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

长按关注

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2021-11-02 23:15:21  更:2021-11-02 23:15:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 22:11:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计