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