Функции в Python
Объявление, аргументы, возврат значений и короткие lambda.
Функция: def и return
def total_price(price, qty):
return price * qty
result = total_price(199, 3) # 597 return отдаёт значение и сразу выходит из функции. Без return она вернёт None: если тесты видят None — скорее всего, ты напечатал результат через print вместо return.
Параметры по умолчанию
def price_with_tax(price, rate=0.13):
return round(price * (1 + rate), 2)
price_with_tax(199) # 224.87
price_with_tax(199, 0.2) # 238.8 Параметр со значением по умолчанию можно не передавать. Не ставь дефолтом список или словарь — он создаётся один раз и живёт между вызовами; используй None и создавай внутри.
Несколько возвращаемых значений
def min_max(items):
return min(items), max(items)
low, high = min_max([349, 99, 199])
# low=99, high=349 return a, b возвращает кортеж, который распаковывают в переменные на месте вызова. Забыл распаковать — получишь один кортеж, а не два значения.
lambda для key
products = [('coffee', 349), ('tea', 99)]
sorted(products, key=lambda item: item[1])
# [('tea', 99), ('coffee', 349)]
max(products, key=lambda item: item[1])
# ('coffee', 349) lambda — безымянная функция в одну строку, чаще всего живёт в key у sorted, min и max. Логика сложнее одного выражения — выноси в обычную def.