Курс 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. Метод hash в Python
  2. Группы исключений в Python
  3. Метод rsub в Python: расширение функциональности вычитания
  4. Работа с модулем os в Python
  5. Руководство по библиотеке pydantic
  6. Оператор обр. импликации
  7. Удаление символов новой строки в Python.
  8. Использование super() в Python
  9. Декораторы с аргументами в Python
  10. Удаление символа из строки
  11. Хранение данных
  12. Аннотации типов в Python
  13. Работа с классами данных
  14. Метод __imod__ для Python
  15. Глобальные переменные в Python
  16. Основы слова
  17. Курс по дообучению ChatGPT
  18. Преобразование в float
  19. Настройка Cron
  20. Переопределение метода __or__()
  21. Объединение кортежей в Python
  22. Поиск наиболее частого элемента списке
  23. Сортировка в Python
  24. Python reversed() vs срез[::-1]
  25. Оператор += в Python
  26. Декораторы в Python
  27. Оператор in для проверки наличия элемента
  28. Генератор бросков кубиков
  29. Работа с многоуровневыми словарями в Python
  30. Замер времени выполнения кода
  31. Оператор Walrus в Python
  32. Создание таблиц в Python с PrettyTable
  33. Создание вложенных циклов for
  34. Создание словарей в Python
  35. Управление фоновыми задачами в Python
  36. Работа с collections в Python.
  37. Создание словарей с defaultdict()
  38. Глобальные переменные в Python
  39. Проверка класса объекта
  40. Изменение списка срезом
  41. Возврат нескольких значений
  42. Подробная информация о %pinfo
  43. Метод Self в Python
  44. Удаление пробелов методом translate()

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