python - mypy 有没有办法在声明变量时警告缺少显式类型?
问题描述
我正在尝试设置mypy以警告我输入时的所有错误,但是当我在声明变量时忘记添加显式输入时,我无法找出正确的配置来获取警告/错误。
例如:
a = min([3, 5, 2, 4])
应该警告我,我忘了在那一行输入。
和这个:
a: int = min([3, 5, 2, 4])
应该说“成功:未发现问题”。
我希望每次都发生这种情况,而不仅仅是当mypy无法自行推断类型时。
有这个标志吗?
解决方案
如果您没有在每个变量注释上包含类型提示,则无法使 mypy 报告错误。这种事情被认为是反模式,因此 mypy 明确不支持。
我不太熟悉 flake8 等可配置的 linting 工具是如何进行的,但 AFAIK 他们也不支持这种检查。因此,如果您想强制使用这种样式,恐怕剩下的唯一选择就是让您编写自己的 linter。
我建议您改为专注于启用以下类别的 mypy 命令行标志/配置值:
- 禁止动态类型- 防止您的代码使用动态
Any
类型,而是要求所有内容都具有显式类型。 - 禁止无类型定义和调用——确保所有函数,无论是否带注释,都将进行类型检查
以下标志也可能有用:
--warn-return-any
-- 进一步禁止使用 Any--warn-unreachable
-- 检测更多代码没有被类型检查的情况--strict-equality
-- 在调试某些不可达性问题时很有帮助
禁止动态类型和使 mypy 更积极地确保代码不会未经检查应该有助于您确保所有内容都具有精确类型的最终目标。
请注意,我上面提到的大多数标志在使用--strict
.
推荐阅读
- image-processing - 使用 Tesseract 从小图像中读取日期
- flutter - 如何在 Flutter 中使用增强现实?有人可以推荐我任何课程或视频吗?
- python - 如何在常规 chrome 而不是 chromedriver 中运行 selenium 代码?
- postgresql - MAX(COUNT(...)) - 错误:不能嵌套调用聚合函数
- javascript - 是否可以在不同的系统/浏览器上具有相同 html 元素的不同 ID 属性?
- asynchronous - 我应该在服务器上的 WEB API 中使用 async/await 吗?
- javascript - 从 SQL Server 获取数据后重置记录集 - Angular
- postgresql - 我应该如何在我的 Postgres 数据库设计中处理父用户和子用户?
- bluetooth - 如何从 esp 32 classic-bluetooth 在我的手机中获取 pin 请求
- swift - 如何在单个@IBAction 中获取多个 UISlider 的值?