Курс 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"
- Уникальные значения из списка
- Применение функции к списку
- Функция enumerate() в Python
- PrettyTable: создание таблицы
- Сортировка и разворот списка
- Создание списков в Python
- Удаление файлов с shutil.os.remove()
- Создание новых списков через list comprehensions
- Получение атрибутов и методов класса
- Подсчет количества элементов в списке
- Умножение строк и списков
- Переменная с нижним подчеркиванием
- Протокол управления контекстом
- Ввод нескольких значений
- Отрицательные индексы списков в Python
- Основные функции и модули Python
- Мощь вложенных функций в Python
- Создание словаря и множества
- Форматирование строк в Python
- Создание панели меню Tkinter
- Создание списка дат
- Проверка строки на палиндром
- Деление в Python
- Непрерывная проверка в Python
- Регулярные выражения: метод match
- Курс Data Scientist в медицине
- Получение текущей директории
- Метод eq для сравнения объектов
- Использование обратной косой черты в f-строках
- Функция map() и ленивая оценка
- Константы в модуле cmath
- Создание namedtuple списком полей
- Создание словарей и множеств в Python.
- Преобразование вложенного списка
- Методы list в Python
- Оператор морж в Python 3.8
- Работа с переменными в Python
- Форматирование кода на Python
- Принципы Zen of Python
- Функция format() в Python
- Операции с датами в Python
- Объединение итераторов
- Генератор бросков кубиков
- Оптимизация создания строк
- Работа с комплексными числами в Python
- Работа с очередями в Python
- Множественное присваивание в Python
- Проблема сравнения словарей
- OrderedDict — упорядоченный словарь
- Быстрый поиск кода















