Обеспечение обратной совместимости с аннотациями переменных Python 3.6 - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь создать пакет python (нигде в данный момент), и я хочу использовать 3.6 переменные аннотации python, то есть

foo: int = 5

, при этом все еще обеспечивая поддержку Python 3.5.

Есть ли способ предоставить аннотации переменных этого типа в Python 3.5, через

from __future__ import variable_annotations

или аналогичные.Я знаю, что можно использовать аннотации типа комментариев, но я бы хотел использовать этот стиль.

1 Ответ

0 голосов
/ 08 июля 2018

TLDR : Нет, вы не можете использовать переменные аннотации в Python 3.5 и более ранних версиях.

Во-первых, Python 3.6.0 changelog сообщает, что переменные аннотации являютсяновая функция по сравнению с 3.5.

Во-вторых, PEP 526 определяется как обратно совместимая .В соответствии с PEP 387 :

Если не выполняется процесс устаревания, описанный ниже, поведение API не должно меняться между любыми двумя последовательными выпусками.

И это включает в себя:

Синтаксис и поведение этих конструкций, как определено в справочном руководстве

Итак, PEP 526 " полностью обратно совместим «просто означает, что синтаксис Python 3.5 (или, если быть точным, pre-PEP526) будет работать в 3.6.0 без изменений: аннотации переменных не обязательны .

Наконец, вы упомянулиmsgstr "аннотации типа комментария".Поэтому я просто дам ссылку на PEP 484 , которая доступна для Python 3.5 (это может быть полезно для некоторых читателей этого вопроса).

...