Курс 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"
- ChainMap избыточные ключи
- Модуль xkcd: добавление юмора в Python
- Представление бесконечности в Python
- Поиск частого элемента
- Показ всплывающих окон Tkinter
- Разделение строк в Python
- Работа с кортежами в Python
- Удаление символа из строки
- Явный импорт переменных
- Извлечение статей с newspaper3k
- Обработка аргументов Python
- Работа с timedelta в Python
- Проверка индексов коллекции
- Оптимизация памяти с __slots__
- Отладка производительности Python
- Проверка ввода с помощью isdigit
- Хранение данных
- Цикл while в Python
- Операции с числами в Python
- Рекурсия для обращения строки
- Итераторы с потерямиZIP
- Метод __index__ в Python
- Библиотека Rich: форматирование текста
- Модуль inspect
- Проверка файла .py на синтаксис.
- Очистка входных данных
- Установка и использование pyshorteners
- Декораторы с @wraps
- Метод radd для пользовательских чисел
- Повторение элементов списков
- Создание объекта timedelta
- Создание виртуальной среды
- Преобразование документов в PDF с помощью Spire.Office
- Копирование списков в Python
- Декораторы в Python
- Основные операции с библиотекой Numpy
- Добавление кнопки в tkinter
- Работа с изменяемыми коллекциями
- Итераторы в Python
- Удаление знаков препинания в Python
- Оптимизация гиперпараметров с Scikit Optimize
- Удаление элементов по срезу
- Создание коллекций из генератора
- Копирование файлов с shutil()
- Генераторы в Python
- Распаковка значений в Python
- Логический оператор «and» в Python















