Код вызовет 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, но часто понятнее передать значение аргументом и вернуть результат явно.