Chr*_*ris 6 python type-hinting python-3.x typehints
您可以在元组或列表中混合类型.为什么不能在输入提示时指定?
>>> from typing import Tuple, List
>>> t = ('a', 1)
>>> l = ['a', 1]
>>> t2: Tuple[str, int] = ('a', 1)
>>> l2: List[str, int] = ['a', 1]
TypeError: Too many parameters for typing.List; actual 2, expected 1
Run Code Online (Sandbox Code Playgroud)
您可以使用 a Union,但通常,如果可以避免它,列表应该是同质的而不是异质的:
from typing import List, Union
lst: List[Union[str, int]] = [1, 'a']
Run Code Online (Sandbox Code Playgroud)
myp,至少,会接受这个就好了。
这意味着尽管您的列表访问器将返回一个联合类型,但通常需要在任何下游函数中处理不同的可能类型。接受工会通常问题不大。
在类型理论中,列表是包含一种类型值的同构结构。这样,List只需采用一种类型,该列表中的每个元素都必须具有该类型。
但是,类型理论还提供求和类型,您可以将它们视为包装从某些固定类型集中选择的一个值的包装器。总和类型受支持typing.Union。要指定列表是int和str值的混合,请使用
List[Union[str, int]]
Run Code Online (Sandbox Code Playgroud)
作为类型提示。
相比之下,元组是产品类型的一个示例,该产品类型由一组固定的类型组成,并且其值是值的集合,该值来自产品类型中的每种类型。Tuple[int,int,int],Tuple[str,int]和Tuple[int,str]都是不同的类型,由两区分数目的在产品类型和它们出现的顺序。