简介
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
应用 Syntastic:在 ~/.vimrc 增加 let g:syntastic_python_checkers=[‘mypy’]
应用 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:在指定目录中生成一个纯文本文件报告,其中蕴含每个模块的类型查看行数
最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈”,发送“J”即可收费取得