jax.tree_util.KeyEntry

内容

jax.tree_util.KeyEntry#

jax.tree_util.KeyEntry = ~KeyEntry#

类型变量。

用法

T = TypeVar('T')  # Can be anything
A = TypeVar('A', str, bytes)  # Must be str or bytes

类型变量主要用于静态类型检查器的便利。它们充当泛型类型的参数以及泛型函数定义的参数。有关泛型类型的更多信息,请参阅类 Generic。泛型函数的工作原理如下

def repeat(x: T, n: int) -> List[T]

‘’’返回一个包含 n 个对 x 的引用的列表。’’’ return [x]*n

def longest(x: A, y: A) -> A

‘’’返回两个字符串中较长的一个。’’’ return x if len(x) >= len(y) else y

后一个示例的签名本质上是 (str, str) -> str 和 (bytes, bytes) -> bytes 的重载。另请注意,如果参数是 str 的某个子类的实例,则返回类型仍然是普通 str。

在运行时,isinstance(x, T) 和 issubclass(C, T) 将引发 TypeError。

使用 covariant=True 或 contravariant=True 定义的类型变量可用于声明协变或逆变泛型类型。有关更多详细信息,请参阅 PEP 484。默认情况下,泛型类型在其所有类型变量中都是不变的。

可以对类型变量进行内省。例如

T.__name__ == ‘T’ T.__constraints__ == () T.__covariant__ == False T.__contravariant__ = False A.__constraints__ == (str, bytes)

请注意,只有在全局范围内定义的类型变量才能被序列化(pickle)。