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