Курс 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"
- Проверка файла .py на синтаксис.
- Модуль Operator в Python
- Приближение чисел в Python
- Функция zip() в Python
- Поиск индексов в списке
- Метод rrshift для пользовательских объектов
- Установка и использование Python-dateutil
- Экспорт данных с помощью writefile
- Нахождение пересечения множеств
- Разделение строки в Python
- Python Ellipsis использование
- Многопоточность в Python
- split() без разделителя
- Форматирование данных с помощью pprint
- Участие в сообществе @selectel
- Запрос пароля с помощью getpass
- Проверка типа объекта в Python
- Метод is_absolute() для PurePath
- Обработка исключений в Python
- Удаление дубликатов в pandas
- Управление памятью в Python
- Метод split() в Python
- Метод сравнения объектов в Python
- Вывод символов строки в Python
- Тестирование времени с Freezegun
- Получение ID процесса
- Транспонирование 2D-массива с помощью zip
- Функция all() в Python
- Преобразование строк в числа с плавающей запятой
- Работа с timedelta в Python
- Переменная Шредингера
- Работа с f-строками 2.0
- Функции с необязательными аргументами
- Метод rsub для пользовательских чисел
- Форматирование объектов с модулем pprint
- Создание графики с черепахой
- Работа с эмодзи в Python
- Хэш-функции в Python
- Concrete Paths — метод .with_suffix()
- Метод rmatmul для пользовательских матриц
- Python Calendar Usage
- Оператор обр. импликации
- Решатель судоку на Python с pygame
- Работа с атрибутом dict
- Обработка исключений в Python
- Делегирование в Python
- Библиотека Chartify: руководство
- Объединение словарей в Python















