["python","python-typing"]
Type hinting tuples in Python

When I want to typehint a tuple in Python like: def func(var: tuple[int, int]): # do something func((1, 2)) # would be fine func((1, 2, 3)) # would throw an error It is required to give the exact number of items in the tuple. That's different from list typehinting: def func(var: list[int]): # do something func([1]) # would be fine func([1, 2]) # would also be fine func([1, 2, 3]) # would also be fine That's consequentially, in a way, because of the type of tuples. Because they are designed not to be changed, you have to hardcode the amount of items in it. So my question is, is there a way to make the number of items in a tuple type hint flexible? I tried something like that but it didn't work: def func(var: tuple[*int]):
Yes, you can make the number of items in a tuple type hint flexible. From Python 3.9 and on you can do: def func(var: tuple[int, ...]): pass Before Python 3.9 you would do: from typing import Tuple def func(var: Tuple[int, ...]): pass From the docs: https://docs.python.org/3/library/stdtypes.html#tuple To specify a variable-length tuple of homogeneous type, use literal ellipsis, e.g. tuple[int, ...]. A plain tuple is equivalent to tuple[Any, ...], and in turn to tuple.