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
。
修复安全性
此修复始终标记为不安全,因为它可能会更改依赖于类型提示的代码的行为,并且它假定默认值始终是合适的——情况可能并非总是如此。