Как использовать лямбда-функции в Python (анонимные функции)
Узнайте, как использовать лямбда-функции в Python. Освойте анонимные функции, встроенные обратные вызовы и сортировку данных списка с помощью лямбда-ключей.
Обзор
В Python функции являются первоклассными гражданами, то есть их можно присваивать переменным, передавать в качестве аргументов другим функциям и возвращать из функций. Хотя стандартные функции объявляются с использованием ключевого слова `def`, Python также предоставляет сокращенный синтаксис для создания анонимных встроенных функций: функции `lambda`.
Лямбда-функция определяется ключевым словом `lambda`, за которым следует список аргументов, двоеточие и одно выражение. Синтаксис: «лямбда-аргументы: выражение». В отличие от функций def, лямбда-выражения не требуют оператора return; результат выражения возвращается автоматически. Они ограничены одной логической линией, что делает их идеальными для простых одноразовых операций.
Лямбда-функции чаще всего используются в качестве аргументов функций более высокого порядка, таких как sorted(), map() и filter(). Например, вы можете передать лямбда-функцию аргументу `sorted()` `key`, чтобы определить собственные критерии сортировки, или использовать их в качестве облегченных функций обратного вызова внутри графических или управляемых событиями приложений.
Код и вывод выполнения
Этот скрипт демонстрирует создание облегченных анонимных функций с использованием лямбда-выражений.
# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))
# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))
# 3. Using lambda as a sorting key (sorting by age)
people = [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 22},
{"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]Пошаговая реализация
- Напишите ключевое слово лямбда, а затем имена параметров, разделенных запятыми.
- Поставьте двоеточие, а затем одно выражение, которое вы хотите вычислить и вернуть.
- Передайте лямбду напрямую в качестве обратного вызова таким функциям, как sorted(), map() или filter().
Часто задаваемые вопросы
Может ли лямбда-функция содержать циклы или несколько операторов?
Нет, лямбда-функции в Python строго ограничены одним выражением. Если вам нужна сложная логика, циклы или назначения переменных, вы должны определить стандартную функцию, используя def.
Должен ли я назначать лямбда-функции переменным?
Вообще нет. Рекомендации PEP 8 предлагают использовать стандартный оператор def вместо присвоения лямбда-выражения переменной, поскольку стандартные функции обеспечивают лучшие имена трассировки стека.
Связанные темы
Узнайте, как сортировать список в Python с помощью метода sort() и функции sorted(). Ознакомьтесь с примерами пользовательской сортировки ключей и обратного порядка.
Как использовать понимание списков в PythonУзнайте, как использовать генераторы списков в Python. Создавайте краткие циклы, применяйте условные фильтры и создавайте матрицы с понятным визуальным синтаксисом.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Функции Python
Мастер-функции Python. Узнайте, как писать код многократного использования с использованием def, определять аргументы, возвращаемые значения и понимать область действия локально и глобально.
Шпаргалка по функциям математического модуля Python
Краткое справочное руководство по стандартной математической библиотеке Python. Узнайте, как использовать тригонометрические, логарифмические, округляющие и арифметические функции.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.