Курс 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"
- Функция findall() для поиска вхождений строки
- Декораторы с аргументами в Python
- Перебор элементов списка в Python
- Атрибуты массивов в Numpy
- Извлечение аудио из видео
- Python union() функция — объединение множеств
- Объединение словарей в Python
- Форматирование строк в Python.
- Создание новых списков в Python
- Основы Python
- Установка и использование howdoi
- Запуск внешнего кода в Jupyter
- Работа с индексами списков
- Класс-оболочка для словарей
- Python: библиотеки и функции
- Отладка производительности Python
- Генератор списка с условием if
- Декораторы классов
- Переменные класса и экземпляра
- Python Менеджер контекста
- Именованные срезы в Python
- Функция zip() в Python
- Установка Git и AWS CLI
- Работа с изображениями PIL
- Особенности запятых в Python
- Получение пути к текущему скрипту с помощью os
- Получение значений из словарей
- Создание пар из последовательностей
- Атрибуты класса и экземпляра
- Атрибуты класса и экземпляра
- Слияние словарей в Python 3.9
- Управление фоновыми задачами в Python
- Дизассемблирование Python кода
- Замена переменных в Python
- Flask — веб-фреймворк Python
- Сериализация объектов в Python
- Переопределение метода __eq__
- Повторение элементов в Python
- Оператор @ для умножения матриц
- Фильтрация входных данных в Python
- Многострочные строки в Python
- Округление банкира в Python
- Вычисление натурального логарифма в NumPy
- Объединение множеств в Python
- Создание обратного итератора
- Изменения в обработке логических значений
- Сокращение ссылок с pyshorteners
- Сортировка с помощью key
- Итераторы в Python















