x = 1
def outer():
global x
def inner():
global x
x = 2
inner()
return x
print(outer())
x
объявлена глобальной.outer
также использует глобальную переменную x
.inner
, вложенная в outer
, также использует глобальную переменную x
и изменяет её значение на 2.outer
возвращает значение глобальной переменной x
, которое после вызова inner()
стало равным 2.Разбор кода:
x
инициализируется значением 1
.outer()
определена. Внутри нее также используется ключевое слово global x
, что означает, что функция работает с глобальной переменной x
.outer()
определена функция inner()
, которая также использует global x
, указывая на использование глобальной переменной.inner()
присваивает глобальной переменной x
значение 2
.outer()
вызывает inner()
.outer()
возвращает текущее значение глобальной переменной x
.print(outer())
выводит значение, возвращенное функцией outer()
.Порядок выполнения:
x = 1
: Глобальная переменная x
становится равной 1.outer()
вызывается.outer()
, inner()
вызывается.inner()
, x = 2
: Глобальная переменная x
становится равной 2.inner()
завершается.outer()
возвращает текущее значение глобальной переменной x
, которое равно 2.print(outer())
выводит 2.Результат:
Код выведет 2
.
Объяснение ключевых моментов:
global x
внутри обеих функций outer()
и inner()
указывает, что они обе работают с одной и той же глобальной переменной x
.x
внутри inner()
влияет на значение x
, которое возвращает outer()
, поскольку это одна и та же глобальная переменная.