Курс Python → Изменение переменной в Python: nonlocal

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

Например, рассмотрим следующий код:


def outer_func():
    a = 10
    
    def inner_func():
        nonlocal a
        a = 20
    
    inner_func()
    print(a)

outer_func()

В данном примере функция inner_func изменяет значение переменной a, которая находится в области видимости функции outer_func. После вызова inner_func значение переменной a становится равным 20, и при выводе на экран получаем именно это значение.

Ключевые слова global и nonlocal сообщают интерпретатору Python о том, что необходимо использовать переменные из соответствующих внешних областей видимости, а не создавать новые переменные с такими же именами.

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Работа с пользовательским вводом
  2. Глобальные переменные в Python
  3. Метод rmatmul для обратного матричного умножения
  4. Кортеж в Python: создание и использование
  5. Печать календаря в Python
  6. Работа с временем в Python
  7. Модуль os в Python: работа с файлами
  8. Подсчет элементов с помощью Counter
  9. Открытие и редактирование скриптов Python
  10. Иерархия классов в Python
  11. Подсчет элементов в Python
  12. Декораторы в Python
  13. Форматирование строк в Python
  14. Работа с комплексными числами
  15. Работа с файлами в Python
  16. Подробная информация о %pinfo
  17. Метод ifloordiv для пользовательских классов
  18. Модуль future Python
  19. Непрерывная проверка в Python
  20. ChainMap.new_child() — добавление нового словаря
  21. Создание новых списков
  22. Вычисление натурального логарифма в NumPy
  23. Создание и использование модулей в Python
  24. Обработка ошибок в Python
  25. Атрибуты класса и экземпляра в Python
  26. Кортежи в Python: особенности и преимущества
  27. Оптимизация гиперпараметров в Python
  28. Изменение логики работы с временем
  29. Функция format() в Python
  30. Список переменных в Python
  31. Управление импортом в Python
  32. Retrying в Python: повторные вызовы
  33. Тип CodeType в Python.
  34. Defaultdict в Python
  35. Возвращение нескольких значений
  36. Перебор элементов списка в Python
  37. Получение атрибутов и методов класса
  38. Анализ текста на русском языке с помощью Pymystem3
  39. Искажение имен в Python
  40. Распаковка с оператором *
  41. Оператор space-invader
  42. Делегирование в Python
  43. Группы исключений в Python

Marketello читают маркетологи из крутых компаний