我有一个采用不同长度的元组作为参数的函数:
from typing import Tuple
def process_tuple(t: Tuple[str]):
# Do nasty tuple stuff
process_tuple(("a",))
process_tuple(("a", "b"))
process_tuple(("a", "b", "c"))
当我注释上述函数时,出现这些错误消息
fool.py:9: error: Argument 1 to "process_tuple" has incompatible type "Tuple[str, str]"; expected "Tuple[str]"
fool.py:10: error: Argument 1 to "process_tuple" has incompatible type "Tuple[str, str, str]"; expected "Tuple[str]"
process_tuple
确实适用于元组,我将它们用作可变长度的不可变列表。我尚未在互联网上找到关于此主题的任何共识,因此我想知道该如何注释这种输入。
我们可以使用...
文字(也称为Ellipsis
)来注释可变长度的均值元组,例如
def process_tuple(t: Tuple[str, ...]):
...
此后错误应消失。
来自docs
要指定同构类型的变长元组,请使用文字省略号,例如
Tuple[int, ...]
。普通的Tuple
等效于Tuple[Any, ...]
,然后依次转到tuple
。