Курс 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. Метод radd для пользовательских чисел
  2. Аннотации типов в Python
  3. Генератор надежных паролей
  4. Объединение словарей в Python
  5. Работа с CSV файлами
  6. Создание пустых функций и классов в Python
  7. Удаление дубликатов из списка
  8. Итераторы в Python
  9. Оформление кода по PEP 8
  10. Измерение времени выполнения кода с использованием time
  11. Получение текущей даты и времени
  12. Проблема сравнения словарей
  13. Создание задания в Cron
  14. Форматирование чисел в Python
  15. Магические методы в Python
  16. Замена текста в Python
  17. Pretty-printing JSON в Python
  18. Python: изменяемые и неизменяемые коллекции
  19. Удаление знаков препинания в Python
  20. Отрицательные индексы списков
  21. Форматирование кода на Python
  22. Оператор in для Python
  23. Оператор «not» в Python
  24. Разработка Telegram-ботов
  25. Установка и использование Logzero
  26. Работа с NumPy.linalg
  27. Бесконечные списки в Python
  28. Разделение списка на гнппы
  29. Сортировка данных в Python
  30. Функция divmod() в Python
  31. Выход из профиля в Django
  32. Python union() функция — объединение множеств
  33. Игра «Виселица» на Python
  34. Работа с NumPy массивами
  35. Переопределение оператора % для объектов
  36. Лямбда-функции в Python
  37. Наиболее частотные элементы с помощью Counter
  38. Установка и использование Python-dateutil
  39. Работа с итераторами через срезы
  40. Работа с itertools
  41. Печать календаря в Python
  42. Модуль os в Python: работа с файлами
  43. Поиск индексов в списке
  44. Выбор редактора кода.
  45. Вычисление разности множеств в Python
  46. Оператор «or» в Python

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