Курс 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. Отправка HTTP-запросов в Python
  2. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  3. Установка и использование модуля «howdoi»
  4. Логические значения в Python
  5. Управление ресурсами в Python
  6. Управление мышью и клавиатурой с Pyautogui
  7. Поиск простых чисел
  8. Проблема с изменяемыми аргументами
  9. Особенности запятых в Python
  10. Правила именования переменных
  11. Работа с f-строками 2.0
  12. Отладка производительности Python
  13. Копирование объектов в Python
  14. Python enumerate() функции
  15. Курс по дообучению ChatGPT
  16. Компиляция регулярных выражений
  17. Изменение элемента списка
  18. Работа с CSV файлами в Python
  19. Создание детектора плагиата
  20. Оператор in в Python
  21. Многоточие в Python
  22. Извлечение новостей с newspaper3k
  23. Solidity для DeFi Ethereum
  24. Методы работы со строками в Python
  25. Работа с OpenCV
  26. Комментарии в Python.
  27. Mad Libs Generator
  28. Работа со слайсами
  29. Лямбда-функции в Python
  30. Поиск индекса элемента
  31. Повторение и перенос строки
  32. Переопределение метода __or__()
  33. Делегирование в Python
  34. Псевдонимы в Python
  35. Работа с комплексными числами
  36. Функции min(), max(), sum()
  37. Обрезка изображения с Pillow
  38. Метод is_absolute() для PurePath
  39. Автоматизация с Python
  40. Ускоренный импорт библиотек
  41. Оператор in и not in в Python
  42. Генерация фальшивых данных с Faker
  43. Преобразование Excel в PDF с Spire.XLS
  44. Метод __getitem__ в Python
  45. Метод getitem для доступа к элементам последовательности
  46. Область видимости переменных
  47. Оператор Walrus в Python
  48. Работа с комбинациями в Python.

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