[英]What does typing.List<~T>[typing.Tuple[int]] mean in Python's typing lib?
在使用Python的typing
模块时,我遇到了一些奇怪的事情:
>>> from typing import List, Tuple
>>> List[Tuple[int]]
typing.List<~T>[typing.Tuple[int]]
什么是类似Java的语法List<~T>
? 这是什么意思?
这不是实际的Python语法,所以不要试图在程序中使用它。 也就是说,这就是他们选择表示泛型类型参数的方式。 在泛型类型的repr
,声明的类型参数在类似Java的<>
尖括号中列出,在每个类型参数之前带有+
, -
或~
,具体取决于该参数是协变,逆变还是两者。
typing.List
采用名为T
的单个非协变,非逆变类型参数,因此在名称后面得到<~T>
。
您会注意到typing.Tuple
在其名称typing.Tuple
没有任何<>
东西。 Tuple
是一个奇怪的特殊情况,因为它需要可变数量的类型参数。
让我们来看看:
typing.List<~T>[typing.Tuple[int]]
typing.List
表示来自typing
库的typing
,名为List
<~T>
表示此类型是通用的,它是根据另一种类型T定义的 [typing.Tuple[int]]
表示类型T是类型Tuple[int]
。 在自然语言中,您可以阅读如下定义:
typing.List<~T>[typing.Tuple[int]]
:one-int元组的标准List
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.