def outer():
x = 5
def inner():
global x
x = 10
inner()
return x
print(outer())
inner
использует ключевое слово global
, но при этом изменяет глобальную переменную x
, которая определена *вне* функции outer
. Локальная переменная x
в outer
не затрагивается. Таким образом, outer
возвращает значение своей локальной переменной x
, которая равна 5.
Разбор кода и объяснение результата:
Данный код демонстрирует взаимодействие локальных и глобальных переменных в Python, а также влияние ключевого слова global
.
outer()
определена. Она содержит локальную переменную x
, инициализированную значением 5.outer()
определена вложенная функция inner()
.inner()
использует ключевое слово global x
. Это означает, что внутри inner()
переменная x
относится к глобальной переменной, а не к локальной переменной функции outer()
.inner()
глобальная переменная x
изменяется на 10. Важно: Это изменение влияет на глобальную область видимости, а не на локальную x
в outer()
.inner()
вызывается внутри outer()
.outer()
возвращает значение своей локальной переменной x
, которая не была изменена вызовом inner()
, так как inner()
изменила глобальную переменную x
.print(outer())
вызывает outer()
и выводит возвращаемое ей значение.Результат:
Код выведет 5
.
Почему 5?
Потому что функция outer()
возвращает значение своей локальной переменной x
, которая инициализирована значением 5 и не изменяется внутри outer()
. Функция inner()
изменяет глобальную переменную x
, что не влияет на локальную переменную x
функции outer()
.
Пример глобальной переменной:
x = 1 # Глобальная переменная
def outer():
x = 5 # Локальная переменная outer()
def inner():
global x
x = 10 # Изменяет ГЛОБАЛЬНУЮ x
inner()
print("x внутри outer:", x) # Выведет 5
print("Глобальная x после inner:", globals()['x']) #выведет 10
outer()
print("Глобальная x после outer:", x) # Выведет 10