Курс 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"
- Сравнение def и lambda в Python
- Работа с комплексными числами в Python
- Управление контекстом с помощью декоратора contextmanager
- Проверка памяти объекта
- Циклы for в Python
- Библиотека schedule: планировщик задач
- Таймер обратного отсчета
- Создание словарей в Python
- Форматирование объектов с модулем pprint
- Обработка ошибок в Python
- Работа с часовыми поясами в Python.
- Метод count в Python: почему count(», ») возвращает 4?
- Работа с кортежами в Python
- Цикл for с enumerate() в Python
- Принципы программирования
- Работа с файлами в Python
- Логирование с Loguru
- Оптимизация сравнения в Python
- Атрибуты класса и экземпляра
- Инициализация объекта
- Форматирование строк в Python
- Цепные операции в Python
- Lambda-функция в Python: использование с map() и sum()
- Обработка исключений в Python
- Автоматизация действий с Pyautogui
- Перевод эмодзи и эмотиконов.
- Создание и использование ChainMap
- Оформление кода по PEP 8
- Анонимные функции в Python
- Транспонирование матрицы
- Создание комплексных чисел
- Ветвление выражения в Python
- Генераторы в Python
- Преобразование регистра строк
- Работа со строками в Python
- Очистка данных с помощью pandas
- Метод join для наборов
- Настройка шрифта и цвета в Tkinter
- Проверка элемента в множестве.
- Namedtuple в Python
- Генераторы данных















