gpt4 book ai didi

python - 使用列表/元组/等。从键入与直接将类型引用为列表/元组/等

转载 作者:IT老高 更新时间:2023-10-28 22:24:36 27 4
gpt4 key购买 nike

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)

我什么时候应该使用一个而不是另一个?

最佳答案

直到 Python 3.9 added support for type hinting using standard collections ,您必须使用 typing.Tupletyping.List 如果您想记录容器的 contents 需要是什么类型:

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

直到 Python 3.8,tuplelist 不支持为 used as generic types .上面的示例记录了函数 f 要求 points 参数是具有两个 float 值的元组。

typing.Tuple这里的特殊之处在于它允许您指定特定数量的预期元素和每个位置的类型。如果未设置长度且类型应重复,请使用省略号:Tuple[float, ...] 描述了一个可变长度 tuplefloats.

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

如果您仍需要支持 Python 3.8 或更早版本的代码,您应该始终选择 typing 泛型,即使您当前没有限制内容。稍后使用泛型类型添加该约束会更容易,因为结果更改会更小。

如果您正在实现自定义容器类型并希望该类型支持泛型,您可以implement a __class_getitem__ hook或从 typing.Generic 继承(它又实现了 __class_getitem__)。

关于python - 使用列表/元组/等。从键入与直接将类型引用为列表/元组/等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com