Распаковка кортежа дает ошибку несоответствия размера кортежа
При проверке типов распаковки кортежа я получаю ошибки пиланса (базовая настройка) в этой программе. Идея состоит в том, что кортеж может иметь 2 или 3 элемента определенного типа.
# pylance typechecking "basic"
from typing import Tuple, Union
TT = Union[Tuple[str,str,float], Tuple[str,str]]
def f(v: TT):
if len(v) == 3:
a,b,c = v # pylance reportGeneralTypeIssues: Tuple size mismatch: expected 3 but received 2
elif len(v) == 2:
a,b = v # pylance reportGeneralTypeIssues: Tuple size mismatch: expected 2 but received 3
Как мне это сделать, чтобы убедить контролера, что это правильно (без #type ignore)?
1 ответ
Я считаю, что решение появится в Python 3.10 с использованием TypeGuards. См. PEP 647, который даже включает пример количества элементов в кортеже.