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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
Вы преобразуете поле из CSV: price = int(text). Иногда там встречается 'N/A'. Какой вариант обработки лучше всего соответствует цели «ловить только ожидаемую ошибку, а не всё подряд»?
Тренировать Python в Telegram

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