当前位置: 首页 > 后端技术 > Python

11.5K星!一个开源的Python静态类型检查库

时间:2023-03-26 16:00:28 Python

介绍Mypy是Python的静态类型检查库,可以给Python程序加上类型注解,使用mypy对其进行静态类型检查,无需查找程序中潜在的错误运行代码。也可以加入githook,实现提交代码前自动检查。Mypy具有强大且易于使用的类型系统,具有类型推断、泛型、可调用类型、元组类型、联合类型和结构子类型等现代功能。使用Python3注释语法(PEP484和PEP526)或基于Python2注释的注释来有效地注释代码并使用mypy检查您的代码是否存在常见错误。您可以在您的程序中混合使用动态类型和静态类型,对于遗留代码,如果使用静态类型不方便,您可以随时回退到动态类型。如:fromtypingimportIteratordeffib(n:int)->Iterator[int]:a,b=0,1whileaboolreturns==s[::-1]项目地址:https://github.com/python/mypy快速开始使用pip安装:$python3-mpipinstall-Umypy如果你想运行最新版本的代码,你可以从git安装它:$python3-mpipinstall-Ugit+git://github.com/python/mypy.git安装完成后,您可以使用以下命令对应用程序的静态类型进行类型检查:$mypyPROGRAM运行测试的基本方法:$pip3install-rtest-requirements.txt$python2-mpipinstall-Utyping$。/runtests.pyIDE使用Syntastic集成Vim:在~/.vimrc中添加letg:syntastic_python_checkers=['mypy']以使用ALE:在~/vim/ftplugin/python.vim中添加配置以显式启用,letb:ale_linters=['mypy']Emas,使用Flycheck和Flycheck-mypySublimeText,使用SublimeLinter-contrib-mypyAutom,使用linter-mypyPyCharm,使用mypy插件VSCode,已经提供mypy的集成,可以加入githook,在提交代码前自动检查常用命令检查指定内容$mypyfoo.pybar.pysome_directory该命令递归检查,会检查目录对应的所有指定文件。Mypy还允许指定代码以其他方式检查:-mMODULE,--moduleMODULE:typecheckprovidedmodules,willnotrecursively-pPACKAGE,--packagePACKAGE:typecheckprovidedpackages,willrecursivecheck-cPROGRAM_TEXT,--commandPROGRAM_TEXT:将提供的字符串作为程序检查--exclude:递归发现要检查的文件时忽略指定的文件名、目录名和路径configure-file--config-fileCONFIG_FILE:从给定文件中读取配置。覆盖mypy内置的默认untyped定义和调用--disallow-untyped-calls:当有类型注解的函数调用定义没有注解的函数时报错--disallow-untyped-defs,当函数定义没有类型时报错annotation--disallow-incomplete-defs,遇到一些注解不完整的函数定义时报错--disallow-untyped-decorators,当用不带注解的装饰器修饰有类型注解的函数时,报错配置错误信息--show-error-context:在所有错误之前解释错误上下文的信息--show-column-numbers:显示行号--show-error-codes:显示错误代码--pretty:格式化错误信息,自动换行,显示源代码片段并显示错误位置标记等--show-absolute-path:显示文件的绝对路径错误信息生成--any-exprs-reportDIR:在指定目录生成文本文件报告ctory--cobertura-xml-reportDIR:在指定目录生成一个CoberturaXMLtypecheck报告,必须安装lxml库才能生成这个报告--html-report/--xslt-html-reportDIR:生成一个HTMLtypecheck指定目录下的report,必须安装lxml库才能生成这个report--lineprecision-reportDIR:在指定目录下生成一个纯文本文件report,其中包含了每个模块类型检查的行数最近编译了几百GPython学习资料库,包括新手电子书、教程、源码等,免费分享给大家!想上“Python编程学习圈”,发“J”免费领取