Курс Python → Лямбда-функции в цикле

Анонимные функции (lambda) в Python могут быть определены в цикле с разными значениями, однако они могут вернуть один и тот же результат. Это происходит потому, что переменная x, которая используется в лямбда-функции, не является локальной для этой функции, а определена во внешней области видимости. При вызове лямбда-функции, она обращается к значению x, которое существует в момент вызова, а не в момент определения.

В случае, когда лямбда-функции определены в цикле, переменная x будет иметь последнее значение, которое ей было присвоено после завершения цикла. Например, если в конце цикла x=4, то все лямбда-функции, определенные в этом цикле, будут возвращать результат 4**2, то есть 16. Это объясняет почему все лямбда-функции, определенные в цикле, могут вернуть одинаковый результат.

Для проверки этого поведения можно изменить значение переменной x и посмотреть на результат, который возвращают лямбда-функции. Если значение x изменено до вызова лямбда-функции, то результат также изменится соответственно новому значению x.


x = 5
functions = [lambda: x**2 for x in range(5)]
for func in functions:
    print(func())

В данном примере создается список из пяти лямбда-функций, каждая из которых возвращает квадрат значения переменной x. После этого происходит итерация по списку функций и их вызов. В результате на экране будут выведены значения 0, 1, 4, 9 и 16, соответствующие квадратам значений переменной x от 0 до 4.

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

Автор урока

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

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

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

  1. Оформление текста в консоли с TermColor
  2. Работа с каталогами в Python
  3. Поиск уникальных элементов строкой в Python
  4. Навыки Python: строки, типы данных
  5. Разделение строки с помощью re.split()
  6. Функции map, filter и reduce
  7. Работа с модулем random
  8. Гибкие функции Python
  9. Использование функции enumerate()
  10. Получение списка файлов в директории с использованием os
  11. Создание Telegram-бота на Python
  12. Исправление ошибки NameError
  13. Метод округления чисел
  14. Обработка ошибок в Python
  15. Оптимизация поиска в словарях
  16. Регистрация на хакатоне
  17. Создание коллекций из генератора
  18. Функции all и any в Python
  19. Руководство по использованию Colorama
  20. Работа с часовыми поясами в Python
  21. Проверка существования переменной с оператором :=
  22. Тестирование времени с Freezegun
  23. Модуль math: основные функции
  24. Работа с collections.Counter
  25. Генераторы списков
  26. Преобразование числа в список цифр
  27. Сортировка данных с лямбда-функциями
  28. Функция product() из itertools
  29. Абстракции словарей и множеств в Python
  30. Codecademy в Telegram
  31. Оптимизация памяти с slots
  32. Работа с словарями в Python
  33. Метод count() для списка
  34. Обработка ошибок ввода данных
  35. Регулярные выражения в Python
  36. Работа с аргументами командной строки
  37. Парсинг веб-страниц с Beautiful Soup
  38. Перемещение и удаление файлов в Python
  39. Изменение элемента списка
  40. Использование подчеркивания в REPL
  41. Введение в PyTorch
  42. Упрощение работы с JSON-данными в Python
  43. Применение функций в Python
  44. Обмен данными с asyncio.Queue
  45. Копирование списков в Python
  46. Работа с модулем bisect
  47. Работа с исключениями в Python
  48. Создание новых списков в Python

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