TypeHinting tuples in Python 中的元组



当我想在 Python 中键入一个元组时,如下所示:

def func(var: tuple[int, int]):
# do something
func((1, 2))    # would be fine
func((1, 2, 3)) # would throw an error

需要给出元组中的确切项数。这与列表类型提示不同:

def func(var: list[int]):
# do something
func([1])       # would be fine
func([1, 2])    # would also be fine
func([1, 2, 3]) # would also be fine

因此,在某种程度上,这是因为元组的类型。由于它们设计为不更改,因此必须对其中的项目数量进行硬编码。

所以我的问题是,有没有办法使元组类型提示中的项目数量灵活?我尝试了这样的事情,但没有用:

def func(var: tuple[*int]):

是的,您可以灵活地调整元组类型提示中的项目数

from typing import Tuple
def func(var: Tuple[int, ...]):
pass

从文档中: https://docs.python.org/3/library/typing.html#typing.Tuple

要指定齐次类型的可变长度元组,请使用文本省略号,例如Tuple[int, ...].普通Tuple相当于Tuple[Any, ...],反过来又等同于tuple

从 PEP 585 开始,可以在不导入typing模块的情况下使用内置类型,因此从 Python 3.9 开始,Tuple[...]已被弃用,取而代之的是tuple[...]

def func(var: tuple[int, ...]):
pass

最新更新