什么是打字。列表<~T>;[typing.Tuple[int]]在Python中的意思';什么是打字库?
在玩Python的什么是打字。列表<~T>;[typing.Tuple[int]]在Python中的意思';什么是打字库?,python,typing,Python,Typing,在玩Python的输入模块时,我遇到了一些奇怪的事情: >>> from typing import List, Tuple >>> List[Tuple[int]] typing.List<~T>[typing.Tuple[int]] >>从输入导入列表,元组 >>>列表[元组[int]] typing.List[typing.Tuple[int]] 这个类似Java的语法是什么?这是什么意思?让我们看看: typing.List<~T
输入模块时,我遇到了一些奇怪的事情:
>>> from typing import List, Tuple
>>> List[Tuple[int]]
typing.List<~T>[typing.Tuple[int]]
>>从输入导入列表,元组
>>>列表[元组[int]]
typing.List[typing.Tuple[int]]
这个类似Java的语法是什么?这是什么意思?让我们看看:
typing.List<~T>[typing.Tuple[int]]
typing.List[typing.Tuple[int]]
typing.List
表示typing
库中名为List
表示此类型是泛型的,它是根据另一个类型T定义的
[typing.Tuple[int]
表示类型T是类型Tuple[int]
在自然语言中,您可以这样阅读定义:
typing.List[typing.Tuple[int]]
:一个int元组的标准列表
这不是实际的Python语法,所以不要尝试在程序中使用它。也就是说,这就是他们选择表示泛型类型的类型参数的方式。在泛型类型的repr
中,声明的类型参数在类似Java的
尖括号中列出,每个类型参数前面都有一个+
、-
或~
,具体取决于该参数是协变、逆变还是非协变
typing.List
接受一个名为T
的非协变、非逆变类型参数,因此它在名称后获得一个
您会注意到,typing.Tuple
的名称后面没有任何
内容Tuple
是一个奇怪的特例,因为它采用了数量可变的类型参数。你说的“它从哪里来”是什么意思?List
只是泛型类型的列表T
,基于~
既不表示共变量也不表示反变量。
/
/
符号从3.6开始从python中消失。它现在只打印typing.List[typing.Tuple[int]]
,所以您看不到它的变化。我找不到与此相关的问题,否则我会要求将其带回:)