在Python的输入lib中输入什么键入.List< ~T> [typing.Tuple [int]]意味着什么?

时间:2016-11-07 18:17:21

标签: python typing

在使用Python的typing模块时,我遇到了一些奇怪的事情:

>>> from typing import List, Tuple
>>> List[Tuple[int]]
typing.List<~T>[typing.Tuple[int]]

这种类似Java的语法List<~T>是什么?这是什么意思?

2 个答案:

答案 0 :(得分:3)

这不是真正的Python语法,所以不要尝试在程序中使用它。也就是说,这就是他们选择代表泛型类型参数的方式。在通用类型repr中,声明的类型参数列在类似Java的<>尖括号中,带有+-或{{1在每个类型参数之前,取决于该参数是协变,逆变还是两者都没有。

~采用名为typing.List的单个非协变非逆变类型参数,因此在名称后面会得到T

您会注意到<~T>在其名称后面没有任何typing.Tuple内容。 <>是一个奇怪的特殊情况,因为它需要可变数量的类型参数。

答案 1 :(得分:1)

让我们看看:

typing.List<~T>[typing.Tuple[int]]
  1. typing.List表示来自typing库的类型,名为List
  2. <~T>表示此类型是通用的,它是根据其他类型T
  3. 定义的
  4. [typing.Tuple[int]]表示类型T是类型Tuple[int]
  5. 在自然语言中,您可以阅读如下定义:

      

    typing.List<~T>[typing.Tuple[int]]:one-int元组的标准列表