Курс 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. Удаление ссылок в Python
  2. Множества и frozenset
  3. Хранение переменных в Python.
  4. Модуль xkcd: добавление юмора в Python
  5. Работа с словарями в Python
  6. Управление импортом в Python
  7. Преобразование регистра символов
  8. Экспорт внешнего файла с помощью writefile
  9. Бесконечная проверка в Python
  10. Логирование в Python
  11. Шаблоны Flask: условия и циклы
  12. Работа с итераторами через срезы
  13. Работа с NumPy массивами
  14. Оператор walrus в Python
  15. Проверка списка: any() и all()
  16. Принцип одной функции
  17. Объединение списков с использованием itertools.chain
  18. Использование обратной косой черты в f-строках
  19. Работа с комплексными числами
  20. Утечки переменных цикла в Python 3.x
  21. Метод difference_update() — разность множеств
  22. Получение атрибутов и методов класса
  23. Поиск файлов по шаблону
  24. Работа с модулем bisect
  25. Объединение словарей в Python
  26. Значения по умолчанию в Python
  27. Удаление элементов из списка в Python
  28. Принципы SRP и OCP
  29. Генерация случайных чисел в Python
  30. Асинхронное программирование с asyncio
  31. Функции range() в Python
  32. Управление асинхронными задачами с помощью Semaphore
  33. Подсчет вхождений элементов
  34. Логирование в Python
  35. Сокращение ссылок с pyshorteners
  36. Принципы программирования
  37. Модуль itertools: комбинации и перестановки
  38. Профилирование кода на Python
  39. Оператор объединения словарей
  40. Отслеживание прогресса с tqdm
  41. Доступ к локальным переменным
  42. Управление пакетами с pip
  43. Работа с географическими данными.
  44. Подсчет элементов с помощью Counter
  45. Работа с JSON данными в Python
  46. Новшества Flask 2.0
  47. Преобразование многоуровневого словаря

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