Python Glossary English

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Сообщить о неточности