Python 3.11+typingпонятие
typing.TypeVarTuple
обобщения и параметры
Переменная переменной арности (variadic): захватывает произвольное число типов для типизации обобщений с изменяемым числом параметров (Python 3.11+).
Синтаксис
Ts = typing.TypeVarTuple('Ts')
TypeVarTuple почти никогда не используют в одиночку — его разворачивают звёздочкой или через Unpack внутри Generic, чтобы захватить хвост из произвольного числа типов (канонический случай — форма многомерного массива с заранее неизвестным числом осей). Обычный TypeVar ловит ровно один тип, этот — целую последовательность. С Python 3.12 то же самое пишется встроенным синтаксисом параметров, без обращения к typing.
Примеры
from typing import TypeVarTuple, Unpack
Ts = TypeVarTuple('Ts')
print(Ts.__name__) # → Ts
# Python 3.12+
from typing import TypeVarTuple, Unpack, get_args
Ts = TypeVarTuple('Ts')
print(get_args(Unpack[Ts])[0] is Ts) # → True
# Python 3.12+
def pack[*Us](*args: *Us) -> tuple[*Us]: return args
print(pack(1, 'a', True)) # → (1, 'a', True)
print(pack()) # → ()
print(pack.__type_params__[0].__name__) # → Us
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности