Курс 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"
- Метод __complex__ в Python
- Объединение объектов в Python
- Функциональное программирование в Python
- JMESPath в Python
- Работа с collections.Counter
- Поиск файлов по шаблону
- Переопределение метода __rshift__
- Генерация тестовых данных с factory_boy
- Преобразование чисел в Python
- Ограничение ресурсов в Python
- Переопределение метода len
- Генераторы в Python
- Библиотека schedule: планировщик задач
- Установка и использование модуля Wikipedia
- Настройка вывода NumPy
- Библиотека funcy: удобные утилиты
- Пустой оператор pass в Python
- Оптимизация памяти с slots
- Настройка шрифта и цвета в Tkinter
- Анализ кода — Python
- Вычисление натуральных логарифмов в NumPy
- Запуск файлового сервера
- Python Метод sleep() времени
- Обработка аргументов Python
- Участие в LP стейкинге Waves
- Упрощенный вывод данных в Python
- Печать календаря
- Расчет времени выполнения
- Шаблоны и наследование в Flask
- Удаление файлов с shutil.os.remove()
- Рациональные числа в Python
- Декораторы в Python
- Обход словаря в Python
- Пропуск строк в файле с itertools
- Python Метод del.
- Измерение времени выполнения в Python
- Настройка нарезки списков
- Решатель судоку на Python с pygame
- Использование super() в Python
- Проверка элементов списка условием
- Метод __float__ в Python
- Условное добавление элементов в список
- Сложение матриц в NumPy
- Конкатенация списков в Python
- Метод pos в Python
- Метод rmatmul для пользовательских матриц
- Статическая типизация в Python















