使用List/Tuple/etc从键入vs直接将类型引用为List/Tuple/

2024-04-25 08:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

typing模块使用ListTuple等有什么区别:

from typing import Tuple

def f(points: Tuple):
    return map(do_stuff, points)

与直接引用Python的类型相反:

def f(points: tuple):
    return map(do_stuff, points)

我什么时候该用一个代替另一个呢?


Tags: 模块fromimporttyping类型mapreturndef
1条回答
网友
1楼 · 发布于 2024-04-25 08:32:55

typing.Tupletyping.ListGeneric types;这意味着您可以指定它们的内容必须是什么类型:

def f(points: Tuple[float, float]):
    return map(do_stuff, points)

这指定传入的元组必须包含两个float值。你不能用内置的tuple类型来实现这一点。

^{}在这里是特殊的,因为它允许您指定所需的特定数量的元素和每个位置的类型。如果长度未设置且类型应重复,请使用省略号:Tuple[float, ...]使用floats描述可变长度tuple

对于^{}和其他序列类型,通常只为所有元素指定类型;List[str]是任意大小的字符串列表。注意,函数应该优先使用^{}作为参数,而typing.List通常只用于返回类型;一般来说,大多数函数都采用任何序列,并且只进行迭代,但是当返回list时,实际上返回的是一个特定的、可变的序列类型。

即使当前不限制内容,也应该始终选择typing泛型。稍后使用泛型类型添加该约束更容易,因为结果更改将更小。

相关问题 更多 >

    热门问题