首页 > 解决方案 > mypy 有没有办法在声明变量时警告缺少显式类型?

问题描述

我正在尝试设置mypy以警告我输入时的所有错误,但是当我在声明变量时忘记添加显式输入时,我无法找出正确的配置来获取警告/错误。

例如:

a = min([3, 5, 2, 4]) 

应该警告我,我忘了在那一行输入。

和这个:

a: int = min([3, 5, 2, 4])

应该说“成功:未发现问题”。

我希望每次都发生这种情况,而不仅仅是当mypy无法自行推断类型时。

有这个标志吗?

标签: pythonmypy

解决方案


如果您没有在每个变量注释上包含类型提示,则无法使 mypy 报告错误。这种事情被认为是反模式,因此 mypy 明确不支持。

我不太熟悉 flake8 等可配置的 linting 工具是如何进行的,但 AFAIK 他们也不支持这种检查。因此,如果您想强制使用这种样式,恐怕剩下的唯一选择就是让您编写自己的 linter。

我建议您改为专注于启用以下类别的 mypy 命令行标志/配置值:

以下标志也可能有用:

禁止动态类型和使 mypy 更积极地确保代码不会未经检查应该有助于您确保所有内容都具有精确类型的最终目标。

请注意,我上面提到的大多数标志在使用--strict.


推荐阅读