В прошлой части мы узнали, как Python ищет переменные по правилам LEGB.
Сегодня разберём, как можно менять переменные вне текущей функции — с помощью
nonlocal и global.▶️
nonlocal — используется, если мы внутри вложенной функции хотим изменить переменную из внешней функции, а не создавать новую локальную:def outer():
x = 10
def inner():
nonlocal x
x += 1
inner()
print(x) # 11
Без nonlocal, x += 1 создало бы новую локальную x, и outer напечатал бы 10.
▶️
global — используется, если мы хотим изменить переменную из глобальной области видимости:x = 5
def change():
global x
x = 99
change()
print(x) # 99
Без global, внутри change() была бы создана новая локальная x, и глобальная x осталась бы равной 5.
Подытожим:
nonlocal работает только во вложенных функциях, global — для переменных на уровне модуля.❤ — если было полезно
tags: #обучение
➡ Python Developer | Чат
