Готовится к выпуску Python 3.6. PEP 494 - В расписании выпуска Python 3.6 упоминается конец декабря, поэтому я просмотрел Что нового в Python 3.6, чтобы увидеть, что они упоминают аннотации переменных :
PEP 484 представил стандарт для аннотаций типов параметров функций, также известных как подсказки типов. Этот PEP добавляет в Python синтаксис для аннотирования типов переменных, включая переменные класса и переменные экземпляра:
primes: List[int] = [] captain: str # Note: no initial value! class Starship: stats: Dict[str, int] = {}
Как и в случае с аннотациями функций, интерпретатор Python не придает никакого особого значения аннотациям переменных, а сохраняет их только в специальном атрибуте
__annotations__
класса или модуля. В отличие от объявлений переменных в статически типизированных языках, цель синтаксиса аннотаций состоит в том, чтобы предоставить простой способ указать метаданные структурированного типа для сторонних инструментов и библиотек с помощью абстрактного синтаксического дерева и__annotations__
атрибута.
Итак, из того, что я прочитал, они являются частью подсказок типов, исходящих из Python 3.5, описанных в разделе Что такое подсказки типов в Python 3.5 .
Я следовать captain: str
и class Starship
пример, но не уверен , о последней: Как primes: List[int] = []
объяснить? Это определение пустого списка, который разрешает только целые числа?
primes: List[int] = []
это просто пустой список какprimes = []
. Разница в том, что вы утверждаете, чтоprimes
оно предназначено для содержания толькоint
s, и сторонние приложения могут ввести проверку вашей программы, чтобы проверить это утверждение, но когда вы запускаете код в любом интерпретаторе python, который точно такой же, как и записьprimes = []
, и, таким образом, выполнениеprimes: List[int] = []; primes.append("string")
по-прежнему действительный.