Готовится к выпуску 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оно предназначено для содержания толькоints, и сторонние приложения могут ввести проверку вашей программы, чтобы проверить это утверждение, но когда вы запускаете код в любом интерпретаторе python, который точно такой же, как и записьprimes = [], и, таким образом, выполнениеprimes: List[int] = []; primes.append("string")по-прежнему действительный.