Курс 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. Метод __complex__ в Python
  2. Объединение объектов в Python
  3. Функциональное программирование в Python
  4. JMESPath в Python
  5. Работа с collections.Counter
  6. Поиск файлов по шаблону
  7. Переопределение метода __rshift__
  8. Генерация тестовых данных с factory_boy
  9. Преобразование чисел в Python
  10. Ограничение ресурсов в Python
  11. Переопределение метода len
  12. Генераторы в Python
  13. Библиотека schedule: планировщик задач
  14. Установка и использование модуля Wikipedia
  15. Настройка вывода NumPy
  16. Библиотека funcy: удобные утилиты
  17. Пустой оператор pass в Python
  18. Оптимизация памяти с slots
  19. Настройка шрифта и цвета в Tkinter
  20. Анализ кода — Python
  21. Вычисление натуральных логарифмов в NumPy
  22. Запуск файлового сервера
  23. Python Метод sleep() времени
  24. Обработка аргументов Python
  25. Участие в LP стейкинге Waves
  26. Упрощенный вывод данных в Python
  27. Печать календаря
  28. Расчет времени выполнения
  29. Шаблоны и наследование в Flask
  30. Удаление файлов с shutil.os.remove()
  31. Рациональные числа в Python
  32. Декораторы в Python
  33. Обход словаря в Python
  34. Пропуск строк в файле с itertools
  35. Python Метод del.
  36. Измерение времени выполнения в Python
  37. Настройка нарезки списков
  38. Решатель судоку на Python с pygame
  39. Использование super() в Python
  40. Проверка элементов списка условием
  41. Метод __float__ в Python
  42. Условное добавление элементов в список
  43. Сложение матриц в NumPy
  44. Конкатенация списков в Python
  45. Метод pos в Python
  46. Метод rmatmul для пользовательских матриц
  47. Статическая типизация в Python

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