SobesLab логотип SobesLab

Ответ

nonlocal аналогично global, но для нелокальных переменных (замыканий). Оно позволяет внутри вложенной функции присваивать переменной из объемлющей функции (не из глобальной). Без nonlocal такое присваивание создало бы новую локальную переменную. Используя nonlocal x, мы говорим, что x – это переменная из внешней (но не глобальной) области видимости, и хотим изменить её. Пример: во вложенной функции можно пометить nonlocal counter, чтобы инкрементировать счётчик, определённый во внешней функции.