跳到内容

non-pep604-isinstance (UP038)

源自 pyupgrade linter。

警告:此规则已弃用,将在未来的版本中删除。

修复总是可用的。

弃用

此规则已被弃用,因为在 isinstanceissubclass 调用中使用 PEP 604 语法不是推荐的做法,并且它错误地暗示了其他类型语法(如 PEP 695)会被 isinstanceissubclass 支持。使用 PEP 604 语法也稍慢一些。

作用

检查 isinstanceissubclass 的使用,它们接受类型的元组进行比较。

为什么这不好?

自从 Python 3.10 以来,可以将 | 分隔的类型联合传递给 isinstanceissubclass,这与 PEP 604 中引入的联合运算符一致。

请注意,这会导致代码速度变慢。 如果 isinstanceissubclass 检查的性能是一个问题,例如在热循环中,请忽略此规则。

示例

isinstance(x, (int, float))

建议改为

isinstance(x, int | float)

Options (选项)

参考