Ответ 1
Как вы уже упоминали, соответствующий PEP 3107 (ссылка для простой справки в случае, если другие сталкиваются с этим вопросом, еще не прочитали его).
В настоящее время аннотации - это своего рода эксперимент и вид незавершенного производства. Фактически в потоке список рассылки python-идей есть тема, которая может быть полезна. (Ссылка предоставлена только для ежемесячного архива, я обнаружил, что URL-адрес для определенных сообщений имеет тенденцию к изменению периодически. Этот вопрос находится в начале декабря и озаглавлен "[Соглашения о концепции Python] для аннотаций функций". первый пост от Томаса Клюйвера 1 декабря.)
Здесь немного от одного из сообщений Guido van Rossum в этом потоке:
12/4/2012 11:43, Jasper St. Pierre писал (а):
Действительно. Раньше я смотрел аннотации, но я никогда не понимал цель. Это казалось особенностью, которая была разработана и реализована без некоторая цель, и где сообщество должно было открыть цель сами по себе.
Ответ Guido:
Напротив. Было слишком много случаев использования, которые сразу же выглядели важно, и мы не могли понять, какие из них были бы самыми важно или как их объединить, поэтому мы решили сделать двухэтапный подход: на шаге 1 мы разработали синтаксис, тогда как на шаге 2 мы будет разрабатывать семантику. Идея была очень ясна, что синтаксис был решен, люди могли бы свободно экспериментировать с разными семантика - просто не в stdlib. Идея заключалась также в том, что в конечном счете, из всех этих экспериментов, появится подходит для stdlib.
Джаспер Сен-Пьер:
Итак, если я могу спросить, какова была первоначальная цель аннотаций? PEP дает некоторые предложения, но не оставляют ничего конкретного. Был ли он разработан помощь для IDE или инструменты статического анализа, которые проверяют исходный код? Что нибудь для самих приложений, чтобы обеспечить особое поведение, как синтаксический анализатор командной строки или статическая проверка времени выполнения?
Ответ Guido:
В значительной степени все вышеизложенное. Но для меня лично, основная цель заключалась всегда в том, чтобы указать обозначение для указания типа ограничения (и, возможно, другие ограничения) для аргументов и возврата значения. Я играю в разное время с конкретными способами комбинирования типы. Например. list [int] может означать список целых чисел, а dict [str, tuple [float, float, float, bool]] может означать строки отображения dict для кортежи из трех поплавков и bool. Но я чувствовал, что было намного сложнее получить консенсус относительно таких обозначений, кроме синтаксиса аргумента аннотации (подумайте о том, сколько возражений вы можете внести в эти два примера:-) - У меня всегда было сильное желание использовать "var: type = по умолчанию" и сделать тип выражения времени выполнения оценкой в то же время, что и по умолчанию.
И крошечный юмор от Неда Батчелдера:
Говорящий момент для меня был во время раннего выступления Py3k в PyCon (возможно это было в Далласе или Чикаго?), Гвидо не мог вспомнить слово "аннотация", и сказал: "вы знаете, те вещи, которые не являются типом объявления?": -)