Вы пишете функцию, которая внутри try делает return, а в finally закрывает ресурс (например, файл или соединение). Что произойдёт с кодом в finally при return из try?

AКод в finally всё равно выполнится перед выходом из функции.
BКод в finally не выполнится, потому что сработал return.
CКод в finally выполнится только если в try было исключение.
DКод в finally выполнится только если return возвращает None.
Правильный ответ. finally выполняется даже при return, поэтому подходит для освобождения ресурсов.

Разбор

Одна из причин использовать finally — гарантировать уборку ресурсов независимо от пути выполнения. Даже если внутри try был return, интерпретатор всё равно сначала выполнит finally, а потом завершит функцию. Это важно для предотвращения утечек файловых дескрипторов и соединений.

Проверь себя · 1/3разбор после ответа
Скрипт получает список строк, но иногда он короче ожидаемого. Что произойдёт при обращении rows[3], если в списке всего 3 элемента?
Тренировать Python в Telegram

Ещё вопросы по теме «Исключения и отладка»