Курс 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. Установка Home Assistant
  5. Имена объектов в Python
  6. Списки в Python: синтаксис представления
  7. Псевдонимы в Python
  8. Работа с множествами в Python
  9. Профилирование с cProfile
  10. Оператор (*) в Python
  11. Библиотека wikipedia для Python
  12. Хешируемые ключи в Python
  13. Частичное совпадение ввода
  14. Роль запятой в Python
  15. Показ всплывающих окон Tkinter
  16. Зарезервированные слова в Python
  17. Очистка строки в Python
  18. Преобразование документов в PDF с помощью Spire.Office
  19. Добавление вложенных списков
  20. Импорт с альтернативным именем
  21. Работа с CSV файлами
  22. Получение текущей директории
  23. Python groupby() из itertools: работа с повторяющимися элементами
  24. Проверка типа данных
  25. Сортировка списка по индексам
  26. Сортировка с помощью key
  27. Подсчет частоты элементов с Counter
  28. Кортежи в Python: особенности и преимущества
  29. Выборка чисел
  30. Декораторы классов
  31. Применение функций в Python
  32. Просмотр внешних файлов в %pycat
  33. Вывод баннеров
  34. Удаление символа из строки
  35. Применение функции к каждому элементу списка
  36. Объединение словарей в Python
  37. Проверка типов с использованием isinstance
  38. Проверка версии Python
  39. Обработка исключения UnboundLocalError
  40. Класс Counter() для подсчета элементов
  41. Метод remove() для удаления элемента из списка
  42. Работа со строками в Python
  43. Метод join() для объединения элементов строки
  44. Проверка типа объекта в Python
  45. Объединение строк с помощью метода join
  46. Нан-рефлексивность в Python
  47. Импорт объектов из модулей
  48. Сравнение строк в Python
  49. Сортировка с помощью параметра key

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