implicit-optional (RUF013)
有时提供修复。
作用
检查类型注释中是否使用了隐式 Optional,当默认参数值为 None 时。
为什么这不好?
PEP 484 禁止使用隐式 Optional。它令人困惑,并且与类型系统的其余部分不一致。
建议使用 Optional[T] 代替。对于 Python 3.10 及更高版本,您也可以使用 T | None。
示例
建议改为
或者,对于 Python 3.10 及更高版本
如果您想在 Python 3.9 及更早版本中使用 | 运算符,可以使用 future imports
限制
不支持类型别名,可能会导致误报。例如,以下代码不会被标记
Options (选项)
预览
启用 [preview] 后,如果 lint.future-annotations 设置为 true,则如果这样做可以在 Python 3.10 之前的版本上使用 | 运算符,则将添加 from __future__ import annotations。
修复安全性
此修复始终标记为不安全,因为它可能会更改依赖于类型提示的代码的行为,并且它假定默认值始终是合适的——情况可能并非总是如此。