当我想在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]):
答案 0 :(得分:9)
是的,您可以使元组类型中的项目数量提示灵活:
View -> Tool Windows -> Version Control (Alt + 9)
来自文档:https://docs.python.org/3/library/typing.html#typing.Tuple
要指定同类型的可变长度元组,请使用文字省略号,例如:
from typing import Tuple def func(var: Tuple[int, ...]): pass
。普通Tuple[int, ...]
相当于Tuple
,相当于Tuple[Any, ...]
。
答案 1 :(得分:3)
从 PEP 585 开始,可以在不导入 typing
模块的情况下使用内置类型。例如
def func(var: tuple[int]):
pass