在玩Python的typing模块时,我发现了一些奇怪的东西:
>>> from typing import List, Tuple
>>> List[Tuple[int]]
typing.List<~T>[typing.Tuple[int]]这个类似Java的语法List<~T>是什么?什么意思?
发布于 2016-11-07 18:29:18
让我们看看:
typing.List<~T>[typing.Tuple[int]]typing.List是指typing库中的一个类型,名为List<~T>意味着这种类型是泛型的,它是用另一种类型T定义的[typing.Tuple[int]]的意思是T类型是Tuple[int]类型。在自然语言中,您可以这样阅读定义:
typing.List<~T>[typing.Tuple[int]]:一个整数元组的标准列表
发布于 2016-11-07 18:29:42
这不是真正的Python语法,所以不要试图在程序中使用它。也就是说,这就是他们选择表示泛型类型的类型参数的方式。在泛型类型的repr中,声明的类型参数列在类似Java的<>尖括号中,在每个类型参数之前有一个+、-或~,这取决于该参数是协变的、反变的还是两者都不是。
typing.List接受一个名为T的非协变、非反变型参数,因此它在名称之后得到一个<~T>。
您会注意到,typing.Tuple在其名称之后没有任何<>内容。Tuple是一个奇怪的特例,因为它需要可变数量的类型参数。
https://stackoverflow.com/questions/40471846
复制相似问题