Lambda — маленькая анонимная функция в одну строку.
# Обычная функция
def double(x):
return x * 2
# Lambda
double = lambda x: x * 2
double(5) # 10
Синтаксис
lambda аргументы: выражение
lambda— ключевое словоаргументы— параметры (как вdef)выражение— результат (одна строка, возвращается автоматически)
Примеры
# Арифметика
add = lambda a, b: a + b
print(add(3, 5)) # 8
square = lambda x: x ** 2
print(square(4)) # 16
is_even = lambda n: n % 2 == 0
print(is_even(10)) # True
# Строки
greet = lambda name: f"Привет, {name}!"
print(greet("Алиса")) # Привет, Алиса!
# Условие
max_num = lambda a, b: a if a > b else b
print(max_num(10, 20)) # 20
Когда использовать
Lambda удобна внутри других функций — как аргумент key= или вместо коротких вспомогательных функций.
numbers = [5, 2, 8, 1, 9]
sorted_desc = sorted(numbers, key=lambda x: -x)
print(sorted_desc) # [9, 8, 5, 2, 1]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # [10, 4, 16, 2, 18]
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even) # [2, 8]
Когда НЕ использовать
Сложная логика — читаемость страдает:
# Плохо
check = lambda x: x > 0 and x < 100 and x % 2 == 0 and str(x)[0] != "5"
# Хорошо — обычная функция
def check_number(x):
if x <= 0 or x >= 100:
return False
if x % 2 != 0:
return False
return str(x)[0] != "5"
Нужна документация — lambda не поддерживает docstring.
Lambda vs def
| Lambda | def | |
|---|---|---|
| Длина | Одна строка | Любая |
| Имя | Анонимная | Обязательно |
| Docstring | ❌ | ✅ |
| Сложность | Только простые выражения | Любая |
Практические примеры
products = [
{"name": "Ноутбук", "price": 50000},
{"name": "Мышка", "price": 500},
{"name": "Клавиатура", "price": 3000}
]
# Сортировка по цене
cheap_first = sorted(products, key=lambda p: p["price"])
print(cheap_first[0]["name"]) # Мышка
# Найти самый дорогой
most_expensive = max(products, key=lambda p: p["price"])
print(most_expensive["name"]) # Ноутбук
# Слова по длине
words = ["Python", "Go", "JavaScript", "Rust"]
by_length = sorted(words, key=lambda w: len(w))
print(by_length) # ['Go', 'Rust', 'Python', 'JavaScript']
Распространённые ошибки
Ошибка 1: Несколько строк — нельзя
# Ошибка — lambda только одна строка
calc = lambda x:
result = x * 2 # SyntaxError
return result
# Правильно
calc = lambda x: x * 2
Ошибка 2: Присваивание внутри lambda
update = lambda x: x = x + 1 # SyntaxError
# Для этого используйте def
Ошибка 3: Сохранять lambda в переменную
# Плохо — если сохраняете, лучше def
double = lambda x: x * 2
square = lambda x: x ** 2
# Хорошо
def double(x):
return x * 2
def square(x):
return x ** 2
Lambda — для одноразового использования внутри другой функции. Если сохраняете в переменную — используйте def.
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!