Я работаю с большой существующей кодовой базой Python и хотел бы начать добавлять аннотации типов, чтобы получить некоторый уровень статической проверки. Я представляю что-то вроде Erlang , Strongtalk или Typed Scheme / Racket .
Я видел быстрые и грязные декораторы, которые вставляют динамические проверки на основе параметров функции и аннотаций возвращаемого типа, но я ищу что-то более надежное и выполняющее проверки во время компиляции.
Какие инструменты доступны прямо сейчас для такого рода вещей? Я знаком с компиляторами и проверкой типов и определенно готов улучшить неполный инструмент, если он имеет хорошую основу.
(Примечание: меня не интересует обсуждение плюсов и минусов статической типизации.)
РЕДАКТИРОВАТЬ : Пример:
def put(d, k, v):
d[k] = v
Я бы хотел иметь возможность комментировать функцию put
как имеющую тип put<K,V>(dict<K,V>, K, V) -> None
.
ОБНОВЛЕНИЕ : Новый PEP 484 (сентябрь 2014 г.) определяет стандарт для статической типизации и аннотаций типов в Python 3.5+. Существует инструмент проверки типа, называемый mypy , который совместим с PEP 484.