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)
请注意,只有定义在全局作用域中的类型变量才能被序列化。