Курс 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. Метод enumerate() в Python
  2. Оператор «not» в Python
  3. Анонимные функции в Python
  4. Python itertools combinations() — группировка элементов
  5. Область видимости переменных в Python
  6. Работа с файлами в Python
  7. Поиск анаграмм с Counter
  8. Названия столбцов в Python таблицах
  9. Метод lt для сортировки объектов
  10. Ошибка NotImplemented в Python
  11. Отправка POST запроса на сервер.
  12. Поиск с библиотекой Google
  13. Генераторы данных
  14. Шаблоны Flask: условия и циклы
  15. Удаление элементов из списка в Python.
  16. Генератор списка с условием if
  17. Тип данных TypeVarTuple
  18. Beautiful Soup — извлечение данных из HTML
  19. Вставка переменных в шаблоны Flask
  20. Удаление символов новой строки в Python.
  21. Структура строк в Python
  22. Сортировка с помощью параметра key
  23. Docstring в Python
  24. Операции с матрицами в Python
  25. Функция map() в Python
  26. Функция enumerate в Python
  27. Переопределение метода sub
  28. Работа с файлами и директориями в Python.
  29. Метод __imod__ для Python
  30. Работа с getopt
  31. Ускоренный импорт библиотек
  32. Транспонирование 2D-массива с помощью zip
  33. Функции any() и all() в Python
  34. Функция product() в Python
  35. Создание новых списков
  36. Экспорт данных с помощью writefile
  37. Очистка строки в Python
  38. Метод join() с набором
  39. Подсказки при вводе данных в Python
  40. Определение наиболее частого элемента с помощью collections.Counter
  41. Python Аргументы по умолчанию
  42. Метод __ilshift__ для битового сдвига влево

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