Sobes.tech
Middle
267

Как работают операторы global и nonlocal в Python?

Ответ от нейросети

sobes.tech AI

В Python операторы global и nonlocal используются для управления областью видимости переменных внутри функций.

  • global объявляет, что переменная внутри функции ссылается на глобальную переменную (в модуле), а не создаёт новую локальную. Это позволяет изменять глобальные переменные изнутри функции.

  • nonlocal используется внутри вложенных функций, чтобы указать, что переменная берётся из ближайшей внешней (но не глобальной) области видимости. Это позволяет изменять переменные из внешней функции внутри вложенной.

Пример:

a = 10  # глобальная переменная

def outer():
    x = 5  # локальная переменная outer
    def inner():
        nonlocal x  # обращаемся к x из outer
        x = 7
        global a
        a = 20
    inner()
    print(x)  # 7

outer()
print(a)  # 20

Без global и nonlocal попытка присвоить значение переменной внутри функции создаст новую локальную переменную, не влияя на внешнюю.