Курс 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. Numpy: использование Ellipsis
  2. Concrete Paths в Python
  3. Переопределение метода __rshift__
  4. Хеширование паролей с солью
  5. Лямбда-функции для min/max
  6. Многоточие в Python
  7. Работа с срезами в Python
  8. Codecademy в Telegram
  9. Именованные срезы в Python
  10. Объединение списков в Python
  11. Управление контекстом выполнения кода
  12. Функция map() в Python
  13. Цикл while в Python
  14. Метод __irshift__ для Python
  15. Списковые включения в Python
  16. Python defaultdict добавление ключа
  17. Путь к интерпретатору Python
  18. Работа с срезами в Numpy
  19. Работа с каталогами в Python
  20. Декораторы в Python
  21. Анонимные функции Lambda
  22. Работа с Enum в Python3.
  23. Оператор continue в Python
  24. Итерация по коллекции в Python
  25. Установка пакета в Python
  26. Копирование объектов в Python
  27. Избегание циклических зависимостей классов в Python
  28. Экспорт данных с помощью writefile
  29. ROT13 Шифр Цезаря в Python
  30. Установка и использование TensorFlow
  31. Инверсия списка и строки
  32. Оператор объединения словарей
  33. Подписка на @SelectelNews
  34. Анонимные функции в Python
  35. Проектирование Singleton с метаклассом
  36. Оценка выражений генератора в Python
  37. Работа с географическими данными.
  38. Преобразование объекта в строку
  39. Работа с YAML в Python
  40. Оператор «not» в Python
  41. GitHub в Telegram: подписка на уведомления
  42. Создание и использование модулей в Python
  43. Проверка класса объекта
  44. Перевод двоичного кода в целое число
  45. Получение пути к текущему скрипту с помощью os
  46. Генераторы в Python

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