Курс 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. Bootle — простой веб-фреймворк
  2. Возведение в квадрат с помощью itertools
  3. Оператор += в Python
  4. Передача аргументов через **arguments
  5. Основные методы NumPy
  6. Потоковый ввод в Python
  7. Создание инструмента обнаружения плагиата
  8. Списки: объединение, изменение
  9. Создание новых списков в Python
  10. Принципы Zen Python
  11. Профилирование кода на Python
  12. Установка и использование Telegram API в Python
  13. Создание словарей с defaultdict()
  14. Генератор надежных паролей
  15. Combobox в Tkinter
  16. Оператор walrus в Python
  17. Создание генераторов
  18. Методы split() и join() — Python строк.
  19. Возврат нескольких значений
  20. Инверсия списка и строки
  21. Обработка исключения UnboundLocalError
  22. Переопределение метода __eq__
  23. Работа с рекламными данными в Pandas
  24. Получение размера объекта с sys.getsizeof()
  25. Декораторы с @wraps
  26. Автоматизация скриптов на AWS Lightsail.
  27. Копирование в Python
  28. Форматирование строк в Python.
  29. Класс Counter() для подсчета элементов
  30. Проекты на Python
  31. Работа с Event() в threading
  32. Перезагрузка оператора в Python
  33. Проверка элементов списка условием
  34. Метод сравнения объектов в Python
  35. Генерация фальшивых данных с Faker
  36. Функциональное программирование.
  37. Изменение списка срезом
  38. Уникальность ключей в словаре
  39. Ускорение обработки данных с %autoawait
  40. Поиск подстроки в строке
  41. Python OrderedDict и fromkeys() — работа с словарями
  42. Удаление элемента из списка
  43. Проверка ввода с помощью isdigit
  44. Необязательные аргументы в Python
  45. Создание и использование ChainMap
  46. Установка Python — Простое руководство

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