Курс 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. Сравнение def и lambda в Python
  2. Работа с комплексными числами в Python
  3. Управление контекстом с помощью декоратора contextmanager
  4. Проверка памяти объекта
  5. Циклы for в Python
  6. Библиотека schedule: планировщик задач
  7. Таймер обратного отсчета
  8. Создание словарей в Python
  9. Форматирование объектов с модулем pprint
  10. Обработка ошибок в Python
  11. Работа с часовыми поясами в Python.
  12. Метод count в Python: почему count(», ») возвращает 4?
  13. Работа с кортежами в Python
  14. Цикл for с enumerate() в Python
  15. Принципы программирования
  16. Работа с файлами в Python
  17. Логирование с Loguru
  18. Оптимизация сравнения в Python
  19. Атрибуты класса и экземпляра
  20. Инициализация объекта
  21. Форматирование строк в Python
  22. Цепные операции в Python
  23. Lambda-функция в Python: использование с map() и sum()
  24. Обработка исключений в Python
  25. Автоматизация действий с Pyautogui
  26. Перевод эмодзи и эмотиконов.
  27. Создание и использование ChainMap
  28. Оформление кода по PEP 8
  29. Анонимные функции в Python
  30. Транспонирование матрицы
  31. Создание комплексных чисел
  32. Ветвление выражения в Python
  33. Генераторы в Python
  34. Преобразование регистра строк
  35. Работа со строками в Python
  36. Очистка данных с помощью pandas
  37. Метод join для наборов
  38. Настройка шрифта и цвета в Tkinter
  39. Проверка элемента в множестве.
  40. Namedtuple в Python
  41. Генераторы данных

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