Что такое аннотации типов (type hints) и обязательны ли они?
Вижу в чужом коде такое: def add(a: int, b: int) -> int:. Что значат эти двоеточия и стрелка? Это что-то меняет в работе программы и надо ли мне их писать?
3 ответа
Это аннотации типов (type hints): подсказка, что a и b — числа (int), а функция возвращает int (то, что после ->).
Ключевой момент: Python их не проверяет и не приводит типы. Можно передать строки — никакой ошибки не будет, аннотация просто проигнорируется в рантайме. Это документация для людей и для инструментов.
def add(a: int, b: int) -> int:
return a + b
add('x', 'y') # вернёт 'xy', аннотации не помешают
Обязательны ли? Нет, чисто опционально. Но они здорово помогают: IDE подсказывает методы, а статические анализаторы вроде mypy ловят ошибки типов до запуска. На больших проектах — почти стандарт, для маленьких скриптов можно не заморачиваться.
Подсказки типов. Необязательны, Python их в рантайме игнорирует.
Не обязательны.