Почему Python выводит другое значение?
подскажите, пожалуйста, почему в 7 строчке моего кода выводится значение "2", а не "5". Хотелось бы услышать развернутый ответ. Заранее большое спасибо!
def func_outer():
x = 2
def func_inner():
global x
x = 5
func_inner()
print(x)
func_outer()
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Я добавил ещё одну переменную и сделал больше печати. Всегда добавляйте отладочную печать, когда что-то не очень понятно:
def func_outer():
x = 2
y = 2
def func_inner():
global x
x = 5
nonlocal y
y = 5
func_inner()
print('внутри функции')
print('x =', x)
print('y =', y)
func_outer()
print('снаружи функции')
print('x =', x)
Вывод:
внутри функции
x = 2
y = 5
снаружи функции
x = 5
Вы меняете глобальную переменную. Если вы хотите поменять переменную внешней функции, используйте не global, а nonlocal.