Курс 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"
- Оператор += для объединения строк
- Ускоренный импорт библиотек
- Замена атрибута в именованном кортеже
- Установка Home Assistant
- Имена объектов в Python
- Списки в Python: синтаксис представления
- Псевдонимы в Python
- Работа с множествами в Python
- Профилирование с cProfile
- Оператор (*) в Python
- Библиотека wikipedia для Python
- Хешируемые ключи в Python
- Частичное совпадение ввода
- Роль запятой в Python
- Показ всплывающих окон Tkinter
- Зарезервированные слова в Python
- Очистка строки в Python
- Преобразование документов в PDF с помощью Spire.Office
- Добавление вложенных списков
- Импорт с альтернативным именем
- Работа с CSV файлами
- Получение текущей директории
- Python groupby() из itertools: работа с повторяющимися элементами
- Проверка типа данных
- Сортировка списка по индексам
- Сортировка с помощью key
- Подсчет частоты элементов с Counter
- Кортежи в Python: особенности и преимущества
- Выборка чисел
- Декораторы классов
- Применение функций в Python
- Просмотр внешних файлов в %pycat
- Вывод баннеров
- Удаление символа из строки
- Применение функции к каждому элементу списка
- Объединение словарей в Python
- Проверка типов с использованием isinstance
- Проверка версии Python
- Обработка исключения UnboundLocalError
- Класс Counter() для подсчета элементов
- Метод remove() для удаления элемента из списка
- Работа со строками в Python
- Метод join() для объединения элементов строки
- Проверка типа объекта в Python
- Объединение строк с помощью метода join
- Нан-рефлексивность в Python
- Импорт объектов из модулей
- Сравнение строк в Python
- Сортировка с помощью параметра key















