Проверяются ли аннотации типов в функции во время выполнения?
Написал функцию с подсказками типов:
def add(a: int, b: int) -> int:
return a + b
add("x", "y") # ?
Я думал, что передать строки нельзя — но код отработал и вернул 'xy'. Получается, аннотации вообще ни на что не влияют во время выполнения?
3 ответа
Да, во время выполнения Python аннотации не проверяет — они чисто декоративные и нужны людям и инструментам. Поэтому add("x", "y") спокойно сложил строки в 'xy'.
Пользу аннотации дают в связке с внешними инструментами: статический анализатор mypy (или встроенный type checker в IDE вроде PyCharm/VS Code) заранее подсветит, что ты передаёшь str туда, где ждут int. Доступны аннотации в рантайме через add.__annotations__, и некоторые библиотеки (например, dataclasses, pydantic) их читают и используют, но сам интерпретатор их не навязывает.
Нет, не проверяются. Это подсказки для mypy и IDE, рантайму на них всё равно.
Подсказки, а не проверки.