Курс 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. Переменные в Python
  2. Изменение логики работы с временем
  3. Использование *args
  4. Метод matmul для умножения матриц
  5. Глобальные переменные в Python
  6. Тернарный оператор в Python
  7. Потоковый ввод в Python
  8. Обработка исключений
  9. Генераторы в Python
  10. Работа с timedelta в Python
  11. Combobox в Tkinter
  12. Разделение строки в Python
  13. Измерение времени выполнения
  14. Быстрый поиск кода
  15. Присвоение значений переменным в Python
  16. Принципы программирования
  17. Декораторы в Python
  18. Визуализация пропусков данных
  19. Передача аргументов через **arguments
  20. Применение функций в Python
  21. Оператор break в Python
  22. Явный импорт в Python
  23. Обновление и получение данных в SQLite
  24. Работа с временем в Python
  25. Приоритет операций в Python
  26. Копирование и вставка текста в Python
  27. Переворот списка в Python
  28. Поиск наиболее частого элемента
  29. List Comprehension Tutorial
  30. Проверка ввода с помощью isdigit
  31. Оценка точности модели
  32. Работа с файлами в Python
  33. Оператор «not» в Python
  34. Работа с набором данных CIFAR10 в PyTorch
  35. Генераторы в Python
  36. Получение локальных переменных в Python
  37. Извлечение аудио из видео
  38. Установка и использование Virtualenv
  39. Функция all() в Python
  40. Обход словаря в Python
  41. Работа с Colorama
  42. Регистрация на хакатоне
  43. Профилирование кода на Python
  44. Работа с базами данных SQLite

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