Оператор nonlocal

Оновлено: 24.04.2023

nonlocal_stmt ::=  "nonlocal" identifier ("," identifier)*

Оператор nonlocal змушує перелічені ідентифікатори посилатися на раніше зв’язані змінні в найближчій охоплюючій області, за винятком глобальних. Це важливо, тому що поведінка за замовчуванням для зв’язування полягає в тому, щоб спочатку шукати локальний простір імен. Цей оператор дозволяє інкапсульованому коду перезв’язувати змінні за межами локальної області окрім глобальної (модульної) області.

Імена, перелічені в операторі nonlocal, на відміну від тих, що перераховані в операторі global, мають посилатися на вже існуючі прив’язки в охоплюючій області (область, у якій має бути створено нову прив’язку, не може бути визначена однозначно).

Імена, перелічені в операторі nonlocal, не повинні конфліктувати з уже існуючими зв’язками в локальній області.