Курс 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"
- Отслеживание прогресса с tqdm
- Метод setdefault() в Python
- Проверка типа объекта в Python
- Функциональное программирование.
- Проверка типов с помощью isinstance
- Область видимости переменных
- Списки в Python: основы
- Установка и использование Python-dateutil
- Метод remove() для удаления элемента из списка
- Хеши в Python
- Расчет времени выполнения
- Декоратор Ajax required
- Работа с изменяемыми коллекциями
- Принципы программирования
- Модуль xkcd: добавление юмора в Python
- Кортеж в Python: создание и использование
- Новшества Flask 2.0
- Открытие и запись файлов
- Создание и использование модулей в Python
- Переменная Шредингера
- Извлечение аудио из видео
- Создание генераторов
- Синхронизация доступа к ресурсам
- Создание таблиц в Python с PrettyTable
- discard() — удаление элемента из множества
- Работа с необработанными строками
- Распаковка аргументов в Python
- Структурирование именованных констант
- Шаблоны и наследование в Flask
- Обратный список чисел
- Возврат нескольких значений
- Реверс строки в Python
- Компиляция регулярных выражений
- Метод __call__ в Python
- Игра «Камень, ножницы, бумага» — Python
- Конкатенация строковых литералов
- Резервирование символов в Python
- Символ подчеркивания в Python
- Освобождение памяти в Python
- Транспонирование 2D-массива с помощью zip
- Замена символов в строке
- Расширение информации об ошибке в Python
- Оператор «or» в Python















