
Mypy 静态类型检查到底能干什么一份带你避坑的完整上手指南【免费下载链接】mypyOptional static typing for Python项目地址: https://gitcode.com/GitHub_Trending/my/mypyMypy 是 Python 的静态类型检查器不用运行代码就能提前揪出类型错误。适合刚开始接触类型注解、想把项目逐步类型化的开发者5 分钟就能跑起来。它替你解决了什么用户输入永远是字符串你把它和数字相加运行到那一天才炸。mypy 静态分析时就会报str 和 int 不能相加bug 不用等上线才见光。你重构时把某个函数参数从 int 改成了 str调用方没改全几十处调用总有一处漏掉。mypy 全量扫一遍所有不匹配的调用直接列给你。老代码想加类型又不敢一次全改。mypy 支持渐进类型化没加注解的函数它默认不查你加一处注解就生效一处随时可以停下来。核心能力速览能力一句话说明典型适用场景静态类型检查不运行代码就分析类型是否用对提交前拦截拼错类型导致的崩溃类型推断函数内部变量类型自动推导少写注解给已有函数补注解时省力渐进类型化无注解函数默认跳过注解一处查一处给老代码库逐步引入类型泛型与联合类型支持 list[str]、int | str 等表达接口参数接受多种数据形态严格模式一条 --strict 开启全套强检查新项目或核心模块追求零类型错误守护进程模式dmypy 常驻内存增量检查亚秒级大型仓库频繁检查嫌单进程慢5 分钟跑起来 Mypy 静态类型检查前置条件只有三条Python 3.10 及以上mypy 运行环境要求环境里能正常使用 pip有一个想检查的 .py 文件或项目安装只有一条命令python3 -m pip install mypy写一个最小示例 example.py就两行number 接收用户输入再和 1 相加。这是典型的输入是 str 你却当 int 用的写法。直接跑一下mypy example.py预期输出类似example.py:2: error: Unsupported operand types for (str and int) Found 1 error in 1 file (checked 1 source file)看到这一行说明一切就绪mypy 没运行你的代码就抓到了那个错误。想从源码安装最新版git clone https://gitcode.com/GitHub_Trending/my/mypy pip3 install mypy进入目录后执行pip3 install .即可。常用配置项怎么选不踩雷默认配置对老项目很友好没有注解的函数基本不检查直接跑就行不用先调参。高频项一--strict。改它是因为你希望新项目或核心模块开启整套严格检查基本做到类型错误零漏网。高频项二--ignore-missing-imports。改它是因为你依赖的第三方库没带类型信息不加这个就满屏 import 报错先屏蔽掉再慢慢治理。配置可以写进 mypy.ini、pyproject.toml 或 setup.cfg团队共享一份不用每次手敲命令行参数。踩过的坑这些报错和异常行为先知道明显错误不报错。原因是出错的函数没有任何注解mypy 默认不查它解法给函数补上注解或临时开--check-untyped-defs。错误莫名其妙消失推断结果全是 Any。通常是某处值来自未注解的接口Any 会一路放行解法在可疑行用 reveal_type() 打印推断类型定位泄露点。init没写注解实例属性全是 Any。原因self 上的属性类型无从推断解法给init补上参数和返回注解。mypy 报错代码照样能运行。类型注解不影响执行报不报错都能用 python3 跑起来解法把报错当提示别当阻断。mypy 的价值一句话在代码运行之前拦住类型错误注解加得越多它拦得越准。想继续深入可以看 快速入门 和 常见问题。【免费下载链接】mypyOptional static typing for Python项目地址: https://gitcode.com/GitHub_Trending/my/mypy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考