Что выводит этот код и почему?

Код вызовет UnboundLocalError внутри show_x на print(x). Присваивание x = 10 делает x локальной во всей функции, но до первого чтения ей ещё не присвоено значение.

Короткий ответ

Что ответить на собеседовании

Код вызовет UnboundLocalError внутри show_x на print(x). Присваивание x = 10 делает x локальной во всей функции, но до первого чтения ей ещё не присвоено значение.

Подробный разбор

Ответ с пояснениями

Условие

Что выводит этот код и почему?

x = 5

def show_x(): print(x) x = 10 return x

show_x() print(x)

Ответ

Код вызовет UnboundLocalError внутри show_x на print(x). Присваивание x = 10 делает x локальной во всей функции, но до первого чтения ей ещё не присвоено значение.

Глобальная x со значением 5 не используется для этого обращения. Из-за необработанного исключения return x и последний print(x) не выполняются. Если нужно только прочитать глобальную переменную, уберите локальное присваивание; если нужно изменить её, существует global, но часто понятнее передать значение аргументом и вернуть результат явно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее