Курс 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"
- Метод radd для пользовательских чисел
- Аннотации типов в Python
- Генератор надежных паролей
- Объединение словарей в Python
- Работа с CSV файлами
- Создание пустых функций и классов в Python
- Удаление дубликатов из списка
- Итераторы в Python
- Оформление кода по PEP 8
- Измерение времени выполнения кода с использованием time
- Получение текущей даты и времени
- Проблема сравнения словарей
- Создание задания в Cron
- Форматирование чисел в Python
- Магические методы в Python
- Замена текста в Python
- Pretty-printing JSON в Python
- Python: изменяемые и неизменяемые коллекции
- Удаление знаков препинания в Python
- Отрицательные индексы списков
- Форматирование кода на Python
- Оператор in для Python
- Оператор «not» в Python
- Разработка Telegram-ботов
- Установка и использование Logzero
- Работа с NumPy.linalg
- Бесконечные списки в Python
- Разделение списка на гнппы
- Сортировка данных в Python
- Функция divmod() в Python
- Выход из профиля в Django
- Python union() функция — объединение множеств
- Игра «Виселица» на Python
- Работа с NumPy массивами
- Переопределение оператора % для объектов
- Лямбда-функции в Python
- Наиболее частотные элементы с помощью Counter
- Установка и использование Python-dateutil
- Работа с итераторами через срезы
- Работа с itertools
- Печать календаря в Python
- Модуль os в Python: работа с файлами
- Поиск индексов в списке
- Выбор редактора кода.
- Вычисление разности множеств в Python
- Оператор «or» в Python















