Курс 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"
- Оформление текста в консоли с TermColor
- Работа с каталогами в Python
- Поиск уникальных элементов строкой в Python
- Навыки Python: строки, типы данных
- Разделение строки с помощью re.split()
- Функции map, filter и reduce
- Работа с модулем random
- Гибкие функции Python
- Использование функции enumerate()
- Получение списка файлов в директории с использованием os
- Создание Telegram-бота на Python
- Исправление ошибки NameError
- Метод округления чисел
- Обработка ошибок в Python
- Оптимизация поиска в словарях
- Регистрация на хакатоне
- Создание коллекций из генератора
- Функции all и any в Python
- Руководство по использованию Colorama
- Работа с часовыми поясами в Python
- Проверка существования переменной с оператором :=
- Тестирование времени с Freezegun
- Модуль math: основные функции
- Работа с collections.Counter
- Генераторы списков
- Преобразование числа в список цифр
- Сортировка данных с лямбда-функциями
- Функция product() из itertools
- Абстракции словарей и множеств в Python
- Codecademy в Telegram
- Оптимизация памяти с slots
- Работа с словарями в Python
- Метод count() для списка
- Обработка ошибок ввода данных
- Регулярные выражения в Python
- Работа с аргументами командной строки
- Парсинг веб-страниц с Beautiful Soup
- Перемещение и удаление файлов в Python
- Изменение элемента списка
- Использование подчеркивания в REPL
- Введение в PyTorch
- Упрощение работы с JSON-данными в Python
- Применение функций в Python
- Обмен данными с asyncio.Queue
- Копирование списков в Python
- Работа с модулем bisect
- Работа с исключениями в Python
- Создание новых списков в Python















