Курс 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"
- Работа с каталогами в Python
- Построение графиков в терминале с bashplotlib
- Генерация случайных чисел в Python
- Python Метод Union Множеств
- Слияние словарей в Python 3.9
- Поиск уникальных и повторяющихся элементов
- Создание класса в Python
- Оператор морж в Python 3.8
- Создание уникального множества
- Работа с файлами в Python
- Создание и операции с дробями
- Атрибуты класса и экземпляра в Python
- Декоратор total_ordering для класса Point
- Разделение строки с регулярными выражениями
- Работа с путями в Python
- Методы split() и join() — Python строк.
- Создание словаря через dict comprehension
- Оптимизация методов в Python 3.7
- Работа с getopt
- Вызов функций по строке в Python.
- Структуры данных в Python
- Основные функции и модули Python
- Проверка условий в Python
- Howdoi — получение ответов из терминала
- JSON в Python: модуль, dump, dumps, load
- Метод setdefault() в Python
- Вывод переменной и строки в Python
- Оператор in в Python
- Справка по импортированным модулям
- Избегайте пустого списка
- Логирование с Logzero
- Возврат нескольких значений из функции
- Метод split() для разделения строк
- Хранение переменных в Python.
- Оператор is в Python
- Списки в Python: основы
- Проблемы с dict в Python
- Наиболее частотные элементы с помощью Counter
- Python: Фильтрация списков с помощью filter()
- Обновление и получение данных в SQLite
- Разделение строк методом split()
- Анонимные функции в Python
- Безопасный доступ к значениям словаря
- Оператор морж в Python 3.8
- Глобальные переменные в Python
- Цикл for в Python
- PrettyTable: создание таблицы















