Развёрнутое пояснение:
1. Вызывается load_config, управление переходит в блок try.
2. Первый print выводит строку read.
3. Инструкция raise создаёт ValueError, но перед выходом из функции обязательно выполняется блок finally.
4. В finally сначала выводится cleanup, затем return возвращает словарь с режимом safe и одновременно отменяет распространение ValueError.
5. Вызов load_config успешно завершается, словарь присваивается переменной config.
6. Последний print получает значение по ключу mode и выводит safe, поэтому итоговый stdout состоит из строк read, cleanup и safe.
Почему это важно: задача проверяет управление потоком при сочетании исключений и finally. В загрузчиках конфигурации, транзакциях и очистке ресурсов return внутри finally может скрыть исходную ошибку, из-за чего система продолжит работу с резервным результатом без ожидаемого сообщения о сбое.
Post #4883
183
Python: задачки и вопросы
- ✍ 2