Курс 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. Python: отсутствие точек с запятыми
  3. Генераторы в Python
  4. Метод get для словарей
  5. Оператор match в Python
  6. Оператор assert в Python
  7. Лямбда-функции в Python
  8. Изменение объектов в Python
  9. Создание списка через цикл
  10. Контекстный менеджер в Python
  11. Сортировка и обратный порядок
  12. Преобразование списка в словарь через генератор
  13. Работа с GitHub в Telegram
  14. Применение промокода в Много лосося
  15. Управление ресурсами в Python
  16. Конкатенация списков в Python
  17. Вызов внешних программ в Python с помощью sh
  18. Функция zip() для объединения списков
  19. Виртуальные среды в Python
  20. Потоковый ввод в Python
  21. Функции all и any в Python
  22. Курсы Яндекс Практикум
  23. Анонимные функции Lambda
  24. Подсчет часто встречающихся элементов
  25. Поиск повторов в списке
  26. Декораторы в Python
  27. Инверсия списка и строки в Python
  28. Модуль os: работа с файлами и папками
  29. Создание новой даты в Python
  30. Изменение логики работы с временем
  31. Удаление специальных символов
  32. Итерация по коллекции в Python
  33. Проверка типа данных
  34. Оператор «or» в Python
  35. Область видимости переменных
  36. Комментарии в Python
  37. Генераторы данных
  38. Определение основы слова с showballstemmer
  39. Роль запятой в Python
  40. Генераторы в Python
  41. Распаковка элементов массива
  42. Метод enumerate() в Python
  43. Создание новых функций с помощью functools.partial
  44. Оператор «and» в Python
  45. Python enumerate() использование
  46. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  47. Хеши в Python
  48. Обработка исключения UnboundLocalError
  49. Операторы += в Python
  50. Модуль Operator в Python

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