Python 3.12+astпонятие
ast.TypeVarTuple
параметры типов
Узел параметра типа *Ts в квадратных скобках (Python 3.12): name — строка, с 3.13 ещё default_value.
Синтаксис
ast.TypeVarTuple(name, default_value=None)
Как и у ParamSpec, звёздочка в name не входит: *Ts даёт name='Ts', и отличить его от TypeVar можно только по классу узла. Поля bound нет. Использование внутри аннотаций *Ts разбирается уже в Starred, а не в TypeVarTuple — объявление и применение выглядят в дереве по-разному.
Примеры
import ast
f = ast.parse('def f[*Ts](*args: *Ts): ...').body[0]
tp = f.type_params[0]
print(type(tp).__name__, tp.name) # → TypeVarTuple Ts
print(type(f.args.vararg.annotation).__name__) # → Starred
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности