Функции в 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.

Что дальше