Курс 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"
- Bootle — простой веб-фреймворк
- Возведение в квадрат с помощью itertools
- Оператор += в Python
- Передача аргументов через **arguments
- Основные методы NumPy
- Потоковый ввод в Python
- Создание инструмента обнаружения плагиата
- Списки: объединение, изменение
- Создание новых списков в Python
- Принципы Zen Python
- Профилирование кода на Python
- Установка и использование Telegram API в Python
- Создание словарей с defaultdict()
- Генератор надежных паролей
- Combobox в Tkinter
- Оператор walrus в Python
- Создание генераторов
- Методы split() и join() — Python строк.
- Возврат нескольких значений
- Инверсия списка и строки
- Обработка исключения UnboundLocalError
- Переопределение метода __eq__
- Работа с рекламными данными в Pandas
- Получение размера объекта с sys.getsizeof()
- Декораторы с @wraps
- Автоматизация скриптов на AWS Lightsail.
- Копирование в Python
- Форматирование строк в Python.
- Класс Counter() для подсчета элементов
- Проекты на Python
- Работа с Event() в threading
- Перезагрузка оператора в Python
- Проверка элементов списка условием
- Метод сравнения объектов в Python
- Генерация фальшивых данных с Faker
- Функциональное программирование.
- Изменение списка срезом
- Уникальность ключей в словаре
- Ускорение обработки данных с %autoawait
- Поиск подстроки в строке
- Python OrderedDict и fromkeys() — работа с словарями
- Удаление элемента из списка
- Проверка ввода с помощью isdigit
- Необязательные аргументы в Python
- Создание и использование ChainMap
- Установка Python — Простое руководство















