使用列表,元组等与键入模块有什么区别:
输入导入元组的
def(点:元组):
返回地图(do_stuff,points)
与直接引用Python的类型不同:
定义f(点:元组):
返回地图(do_stuff,points)
什么时候我应该用一个而不是另一个
typing.Tuple和typing.List是泛型类型;这意味着您可以指定其内容的类型:
定义f(点:元组[float,float]):
返回地图(do_stuff,points)
这指定传入的元组必须包含两个float值。您不能使用内置的元组类型执行此操作
typing.Tuple在这里很特别,它允许您指定所需的特定数量的元素以及每个位置的类型。如果未设置长度且类型应重复,请使用省略号:Tuple[float,…]使用floats描述可变长度Tuple
对于类型。列出和其他序列类型,您通常只指定所有元素的类型列表[str]是任意大小的字符串列表。请注意,函数应优先采用typing.Sequence作为参数,typing.List通常仅用于返回类型;一般来说,大多数函数都会采用任何序列,并且只进行迭代,但当您返回一个列表时,实际上是在返回一个特定的、可变的序列类型
即使当前未限制内容,也应始终选择键入泛型。稍后使用泛型类型更容易添加该约束,因为所产生的更改将更小