Курс Python → Работа с областями видимости переменных

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

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


def func1():
    enclosing = 0
    
    def func2():
        nonlocal enclosing
        enclosing = 1
        
    func2()
    print(enclosing)

func1()

В данном примере переменная enclosing объявлена во внешней функции func1, а изменение ее значения происходит во внутренней функции func2 с помощью ключевого слова nonlocal. При вызове функции func1 будет изменено значение переменной enclosing на 1, что и будет выведено на экран.

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

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

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

Автор урока

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

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

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

  1. Создание обратного итератора
  2. Отладчик pdb: начало работы
  3. Реализация метода __abs__ в Python
  4. Добавление вложенных списков
  5. Нахождение самого длинного слова в списке с помощью max
  6. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  7. Управление ресурсами с контекстными менеджерами
  8. Преобразование в float
  9. Особенности запятых в Python
  10. Функции min(), max(), sum()
  11. Запрос пароля с помощью getpass
  12. Асинхронное выполнение задач в процессах
  13. Подсчет элементов с помощью Counter из collections
  14. Руководство по Pymorphy2
  15. Создание Telegram-бота на Python
  16. Подсказки типов в Python
  17. Замена текста с re.sub()
  18. Операции с комплексными числами
  19. Обновление и получение данных в SQLite
  20. Изменения в обработке логических значений
  21. Поиск частых элементов в списке
  22. Сортировка и обратный порядок
  23. Создание функций высшего порядка
  24. Конструктор в Python
  25. Структура данных словарь в Python
  26. Профилирование кода на Python
  27. Метод __getitem__ в Python
  28. Оценка точности модели
  29. Декораторы с @wraps
  30. Работа со случайными элементами
  31. Отслеживание прогресса с tqdm
  32. Базовые объекты Python
  33. Применение функции map() в Python
  34. Умножение строк и списков
  35. Циклы в Python
  36. Вычисление времени выполнения
  37. Декораторы для регистрации функций
  38. Метод ne для сравнения объектов
  39. Работа с collections в Python
  40. Генераторы в Python
  41. Переопределение метода __pow__
  42. Работа с Telegram API на Python
  43. Оператор += в Python
  44. Сортировка с параметром key
  45. Magic Commands — улучшение работы с Python
  46. Поиск уникальных элементов строкой в Python

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