Python не позволяет аннотировать типы переменных при распаковке

PEP 526 говорит следующее:

Обратите внимание, что хотя синтаксис позволяет упаковывать кортежи, он не позволяет аннотировать типы переменных при использовании распаковки кортежей.

Почему python не поддерживает аннотации типов переменных при распаковке? PS. Мне нужно сначала аннотировать типы, а затем выполнять распаковку, что нормально, за исключением того, что аннотирование при распаковке было бы более аккуратным.


person rohitjv    schedule 02.12.2019    source источник
comment
Я имею в виду, что обычно любая используемая вами программа проверки типов со статическим временем может вывести правильные типы, если вы правильно напечатали остальную часть своего кода.   -  person juanpa.arrivillaga    schedule 03.12.2019


Ответы (1)


Некоторая информация об этом содержится в разделе Отклоненные/отложенные предложения. PEP 526:

Разрешить аннотации типов для распаковки кортежа: это вызывает двусмысленность: неясно, что означает это утверждение:

x, y: T

Являются ли x и y оба типа T, или мы ожидаем, что T будет типом кортежа из двух элементов, распределенных по x и y, или, возможно, x имеет тип Any, а y имеет тип T? (Последнее — это то, что это означало бы, если бы это произошло в сигнатуре функции.) Вместо того, чтобы оставлять читателя (человека) в догадках, мы запрещаем это, по крайней мере, на данный момент.

Комментарий, кажется, предполагает, что в конечном итоге может быть предложен более простой синтаксис, который не так подвержен неправильному толкованию. На данный момент нам осталось отдельно аннотировать типы кортежа.

person Ben Siver    schedule 02.12.2019