implicit-optional (RUF013)
于 v0.0.273 版本中添加 · 相关议题 · 查看源码
有时提供修复。
作用
检查当默认参数值为 None 时,类型注解中是否使用了隐式 Optional。
如果 lint.future-annotations 设置为 true,且在 Python 3.10 之前的版本中使用 | 运算符可行,则会自动添加 from __future__ import annotations。
为什么这不好?
隐式 Optional 被 PEP 484 所禁止。它会导致混淆,且与类型系统的其余部分不一致。
建议使用 Optional[T] 代替。对于 Python 3.10 及更高版本,你也可以使用 T | None。
示例
建议改为
或者,对于 Python 3.10 及更高版本
如果你想在 Python 3.9 及更早版本中使用 | 运算符,可以使用 future 导入
局限性
类型别名暂不支持,可能会导致漏报。例如,以下代码不会被标记
Options (选项)
修复安全性
此修复程序始终被标记为不安全,因为它可能会改变依赖于类型提示的代码行为,并且它假设默认值始终是恰当的——事实可能并非如此。