Распаковка кортежа дает ошибку несоответствия размера кортежа

При проверке типов распаковки кортежа я получаю ошибки пиланса (базовая настройка) в этой программе. Идея состоит в том, что кортеж может иметь 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, который даже включает пример количества элементов в кортеже.

Другие вопросы по тегам