类型提示:输入和输出具有相同的可变长度元组

Ins*_*spi 6 python python-3.x

假设我有一个函数如下:

from typing import Tuple

def add_one(numbers: Tuple[int, ...]) -> Tuple[int, ...]:
    return tuple(number+1 for number in numbers)
Run Code Online (Sandbox Code Playgroud)

该函数接受一个可变长度的元组作为输入,并返回另一个具有相同长度的元组。

我的问题是:如何用类型提示来表达这一点?正如您在我的示例中看到的,我只能表示输入和输出元组都具有可变长度,而不是它们具有相同的长度。

编辑:这是一个虚拟示例,我用来解释我的意思,虽然我不会以这种方式实现它,但我得到了一个更复杂的函数,可以证明需要这种类型提示

Mab*_*bus 2

使用TypeVar

from typing import Tuple, TypeVar

TupleType = TypeVar("TupleType", bound=Tuple[int, ...])

def add_one(numbers: TupleType) -> TupleType:
    return tuple(number+1 for number in numbers) # type: ignore[return-value]
    
a = add_one((1, 2, 3))
reveal_type(a)
Run Code Online (Sandbox Code Playgroud)

表明:

Revealed type is "Tuple[builtins.int, builtins.int, builtins.int]
Run Code Online (Sandbox Code Playgroud)