redundant-bool-literal (RUF038)
有时提供修复。
此规则不稳定且处于预览状态。使用需要 --preview 标志。
作用
检查 Literal[True, False] 类型注解。
为什么这不好?
Literal[True, False] 可以在类型注解中被替换为 bool,它们具有相同的语义含义,但 bool 更简洁易读。
bool 类型只有两个常量实例:True 和 False。 静态类型检查器例如 mypy 将 Literal[True, False] 视为等同于类型注解中的 bool。
示例
建议改为
修复安全性
此规则的修复被标记为不安全,因为它可能会改变代码的语义。 具体来说:
- 当使用
Literal[True]和Literal[False]重载布尔参数时,类型检查器可能不会将bool视为等效(例如,参见 #14764 和 #5421)。 bool并不完全等同于Literal[True, False],因为bool是int的子类,如果类型注解用在数值上下文中,则此规则可能不适用。
此外,Literal 切片可能包含尾行注释,修复会删除这些注释。