跳到内容

redundant-numeric-union (PYI041)(冗余数值联合类型)

源自 flake8-pyi 代码检查器。

有时提供修复。

作用

检查参数注解是否包含内置数值类型之间的冗余联合类型(例如,int | float)。

为什么这不好?

类型标注规范声明:

Python 的数值类型 complexfloatint 彼此之间不是子类型,但是为了支持常见的用例,类型系统包含一个简单的快捷方式:当一个参数被注解为类型 float 时,类型 int 的参数是可以接受的;类似地,对于一个被注解为类型 complex 的参数,类型 floatint 的参数是可以接受的。

因此,包含 intfloat 的联合类型在参数注解的特定上下文中是冗余的,因为它等同于只包含 float 的联合类型。为了可读性和清晰度,联合类型应该省略冗余元素。

示例

def foo(x: float | int | str) -> None: ...

建议改为

def foo(x: float | str) -> None: ...

修复安全性

除非类型注解包含注释,否则此规则的修复被标记为安全。

请注意,虽然修复可能会将嵌套的联合类型展平为单个顶级联合类型,但注解的语义将保持不变。

参考