Подсказки типа переменной mypy – это утверждения или объявления?Python

Программы на Python
Anonymous
Подсказки типа переменной mypy – это утверждения или объявления?

Сообщение Anonymous »

Я очень озадачен тем, что на самом деле делают подсказки типов переменных в Python (с использованием mypy). Насколько я понимаю, они полезны для подтверждения того, что правая часть присваивания на самом деле имеет тот же тип, что и подсказка типа в левой части. Но похоже, что есть и некоторый компонент объявления.
Я смотрю на эту функцию. Когда я запускаю mypy, я получаю следующую ошибку:

Код: Выделить всё

def get_organization_from_query_params(query_params: QueryDict) -> Organization:
organization_id = query_params.get("organization_id")
organization = get_object_or_404(Organization.objects.active(), pk=organization_id)
return organization
mypy --strict --follow-imports=silent report: ошибка: возврат любого значения из функции, объявленной для возврата «Организация» [no-any-return]
Однако, когда я добавляю подсказки типа в организацию, меняя строку на организацию: Organization = get_object_or_404(Organization.objects.active(), pk=organization_id), mypy очень доволен, никаких проблем.
В этом случае mypy просто автоматически предполагает, что с этого момента организация имеет тип Организация? Как он может считать это правильным, если раньше mypy думал, что get_object_or_404 возвращает объект типа Any, но я вообще не менял функциональность, и теперь он верит в тот факт, что get_object_or_404 возвращает объект типа Организация? Запускает ли написание подсказки типа ОБА утверждение и объявление??

Подробнее здесь: https://stackoverflow.com/questions/787 ... clarations

Вернуться в «Python»