在使用Python的typing
模块时,我遇到了一些奇怪的事情:
>>> from typing import List, Tuple
>>> List[Tuple[int]]
typing.List<~T>[typing.Tuple[int]]
这种类似Java的语法List<~T>
是什么?这是什么意思?
答案 0 :(得分:3)
这不是真正的Python语法,所以不要尝试在程序中使用它。也就是说,这就是他们选择代表泛型类型参数的方式。在通用类型repr
中,声明的类型参数列在类似Java的<>
尖括号中,带有+
,-
或{{1在每个类型参数之前,取决于该参数是协变,逆变还是两者都没有。
~
采用名为typing.List
的单个非协变非逆变类型参数,因此在名称后面会得到T
。
您会注意到<~T>
在其名称后面没有任何typing.Tuple
内容。 <>
是一个奇怪的特殊情况,因为它需要可变数量的类型参数。
答案 1 :(得分:1)
让我们看看:
typing.List<~T>[typing.Tuple[int]]
typing.List
表示来自typing
库的类型,名为List
<~T>
表示此类型是通用的,它是根据其他类型T [typing.Tuple[int]]
表示类型T是类型Tuple[int]
。在自然语言中,您可以阅读如下定义:
typing.List<~T>[typing.Tuple[int]]
:one-int元组的标准列表