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=True
或contravariant=True
显式标记为协变或逆变。 默认情况下,手动创建的类型变量是不变的。 有关更多详细信息,请参阅 PEP 484 和 PEP 695。