Курс 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. Генераторы словарей и множеств
  2. Проверка подстроки в строке
  3. Определение объема памяти объекта
  4. Нахождение пересечения множеств
  5. Метод __call__ в Python
  6. Работа с коллекциями Python
  7. Управление памятью в numpy.
  8. Удаление файлов в Python
  9. Экспорт функций в Python
  10. Метод is_absolute() для PurePath
  11. Передача неизвестных аргументов в Python.
  12. Создание задания в Cron
  13. Создание таблиц в терминале с PrettyTable
  14. Python Метод Union Множеств
  15. Фильтрация данных в Python.
  16. Создание коллекций из выражения-генератора
  17. Разделение строк в Python
  18. Тип CodeType в Python.
  19. Удаление ключей из словаря
  20. Добавление элементов в список: append() vs extend()
  21. Декораторы классов
  22. Codecademy в Telegram
  23. Создание виртуальной среды
  24. Зарезервированные слова в Python
  25. Равенство и идентичность в Python
  26. Получение значений из словарей
  27. Подсчет элементов в Python
  28. Форматирование объектов с модулем pprint
  29. Оператор == в Python
  30. Работа с файлами в Python
  31. Ветвление выражения в Python
  32. Измерение времени выполнения кода
  33. Преобразование строк в числа с плавающей запятой
  34. Работа с файловой системой в Python
  35. Python enumerate() для работы с индексами
  36. Работа со словарями в Python
  37. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  38. Поиск уникальных и повторяющихся элементов
  39. Создание итератора
  40. Работа с модулем bisect
  41. Метод enumerate() в Python
  42. Поиск самого частого элемента
  43. Очистка данных с Pandas

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