Курс 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"
- Генераторы словарей и множеств
- Проверка подстроки в строке
- Определение объема памяти объекта
- Нахождение пересечения множеств
- Метод __call__ в Python
- Работа с коллекциями Python
- Управление памятью в numpy.
- Удаление файлов в Python
- Экспорт функций в Python
- Метод is_absolute() для PurePath
- Передача неизвестных аргументов в Python.
- Создание задания в Cron
- Создание таблиц в терминале с PrettyTable
- Python Метод Union Множеств
- Фильтрация данных в Python.
- Создание коллекций из выражения-генератора
- Разделение строк в Python
- Тип CodeType в Python.
- Удаление ключей из словаря
- Добавление элементов в список: append() vs extend()
- Декораторы классов
- Codecademy в Telegram
- Создание виртуальной среды
- Зарезервированные слова в Python
- Равенство и идентичность в Python
- Получение значений из словарей
- Подсчет элементов в Python
- Форматирование объектов с модулем pprint
- Оператор == в Python
- Работа с файлами в Python
- Ветвление выражения в Python
- Измерение времени выполнения кода
- Преобразование строк в числа с плавающей запятой
- Работа с файловой системой в Python
- Python enumerate() для работы с индексами
- Работа со словарями в Python
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Поиск уникальных и повторяющихся элементов
- Создание итератора
- Работа с модулем bisect
- Метод enumerate() в Python
- Поиск самого частого элемента
- Очистка данных с Pandas















