jax.tree_util.KeyEntry#

jax.tree_util.KeyEntry = ~KeyEntry#

类型变量。

构造类型变量的首选方法是通过泛型函数、类和类型别名的专用语法

class Sequence[T]:  # T is a TypeVar
    ...

此语法还可用于创建绑定和约束类型变量

# S is a TypeVar bound to str
class StrSequence[S: str]:
    ...

# A is a TypeVar constrained to str or bytes
class StrOrBytesSequence[A: (str, bytes)]:
    ...

但是,如果需要,也可以手动构造可重用的类型变量,如下所示

T = TypeVar('T')  # Can be anything
S = TypeVar('S', bound=str)  # Can be any subtype of str
A = TypeVar('A', str, bytes)  # Must be exactly str or bytes

类型变量的存在主要是为了静态类型检查器。 它们充当泛型类型的参数以及泛型函数和类型别名定义的参数。

类型变量的方差由类型检查器推断,当它们通过类型参数语法创建时以及当传递 infer_variance=True 时。 手动创建的类型变量可以通过传递 covariant=Truecontravariant=True 显式标记为协变或逆变。 默认情况下,手动创建的类型变量是不变的。 有关更多详细信息,请参阅 PEP 484 和 PEP 695。