跳到内容

non-pep646-unpack (UP044)

源自 pyupgrade linter。

修复总是可用的。

作用

检查在 Python 3.11 及更高版本中使用 Unpack[] 的情况,并建议使用 * 代替。

为什么这不好?

PEP 646 引入了一种基于 * 运算符的新的序列解包语法。这种语法比之前的 Unpack[] 语法更简洁易读。

示例

from typing import Unpack


def foo(*args: Unpack[tuple[int, ...]]) -> None:
    pass

建议改为

def foo(*args: *tuple[int, ...]) -> None:
    pass

修复安全性

此规则的修复被标记为不安全,因为在运行时内省类型时,Unpack[T]*T 被认为是不同的值。 但是,在大多数情况下,该修复应该是可以安全应用的。