Курс 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"
- Numpy: использование Ellipsis
- Concrete Paths в Python
- Переопределение метода __rshift__
- Хеширование паролей с солью
- Лямбда-функции для min/max
- Многоточие в Python
- Работа с срезами в Python
- Codecademy в Telegram
- Именованные срезы в Python
- Объединение списков в Python
- Управление контекстом выполнения кода
- Функция map() в Python
- Цикл while в Python
- Метод __irshift__ для Python
- Списковые включения в Python
- Python defaultdict добавление ключа
- Путь к интерпретатору Python
- Работа с срезами в Numpy
- Работа с каталогами в Python
- Декораторы в Python
- Анонимные функции Lambda
- Работа с Enum в Python3.
- Оператор continue в Python
- Итерация по коллекции в Python
- Установка пакета в Python
- Копирование объектов в Python
- Избегание циклических зависимостей классов в Python
- Экспорт данных с помощью writefile
- ROT13 Шифр Цезаря в Python
- Установка и использование TensorFlow
- Инверсия списка и строки
- Оператор объединения словарей
- Подписка на @SelectelNews
- Анонимные функции в Python
- Проектирование Singleton с метаклассом
- Оценка выражений генератора в Python
- Работа с географическими данными.
- Преобразование объекта в строку
- Работа с YAML в Python
- Оператор «not» в Python
- GitHub в Telegram: подписка на уведомления
- Создание и использование модулей в Python
- Проверка класса объекта
- Перевод двоичного кода в целое число
- Получение пути к текущему скрипту с помощью os
- Генераторы в Python















