В Python часто бывают ситуации, когда вам нужна маленькая функция всего один раз. Например, чтобы отсортировать список по хитрому правилу.
Писать для этого полноценный
def, придумывать имя и занимать 3 строки кода - лень и некрасиво. Тут на сцену выходят Lambda-функции (они же анонимные функции).Синтаксис прост:
lambda аргументы: выражениеСравните:
# Классический способ
def square(x):
return x ** 2
# Lambda-стиль
sq = lambda x: x ** 2
🔥 Где это реально нужно?
Чаще всего - внутри функций
sorted(), min(), max(), map() или filter().Пример из жизни:
У нас есть список студентов и их баллов. Нам нужно отсортировать их не по имени, а по баллам.
students = [
("Антон", 50),
("Вика", 90),
("Борис", 75)
]
# Сортируем по 2-му элементу кортежа (x[1])
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students)
# [('Антон', 50), ('Борис', 75), ('Вика', 90)]
Внутри
key= мы на лету создали функцию, которая принимает студента x и возвращает его балл x[1]. sorted использует это значение для сортировки.🛑 Когда НЕ надо использовать Lambda:
Не присваивайте лямбды переменным, если планируете использовать их много раз.
# ❌ Плохо (нарушает PEP 8):
f = lambda x: x * 2
# ✅ Хорошо:
def f(x):
return x * 2
Лямбды созданы, чтобы быть "одноразовыми"!
Используете лямбды или предпочитаете старый добрый
def? 👇📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
