⚡️ Разница между global и nonlocal



global
— объявление, которые говорит о том, что перечисленные идентификаторы стоит воспринимать как глобальные. То есть, все изменения внутри функции будут влиять на внешнюю переменную.



nonlocal — оператор, уведомляющий среду, что стоит работать не с локальной переменной, а уровнем выше.



То есть, если вы создадите функцию внутри функции и используете nonlocal, то будет использоваться не глобальная переменная, а та, что в функции-родителя (смотреть method2).



Стоит отметить, что в отличии от global, nonlocal требует, что бы переменная уже была определена.



Ну и как всегда — документация :)



#теория #операторы