На этом шаге мы освежим наши знания о функциях.
Функции позволяют при необходимости повторно использовать фрагменты кода: писать их один раз, а задействовать многократно. При описании функции указывается ключевое слово def, название функции и набор аргументов для параметризации выполнения ее тела. Различные наборы аргументов могут резко менять возвращаемые функцией результаты. Допустим, вы описали функцию square(x), возвращающую квадрат входного аргумента x. Вызов square(10) возвращает 10 * 10 = 100, а вызов square(100) возвращает 100 * 100 = 10000.
Ключевое слово return завершает выполнение функции и передает поток выполнения вызывающей стороне. Можно также указать необязательное значение после ключевого слова return, содержащее возвращаемый функцией результат (пример 1.14).
def appreciate(x, percentage): return x + x * percentage / 100 print(appreciate(10000, 5)) # 10500.0
Мы создали функцию appreciate() для вычисления роста вклада при заданной доходности. В приведенном коде мы вычисляем, насколько растет вклад 10 000 долларов за один год при ставке 5%. В результате получается 10 500 долларов. С помощью ключевого слова return указываем, что результат функции должен равняться сумме исходного вклада и номинальной процентной ставки. Тип возвращаемого значения функции appreciate() - float.
С помощью ключевого слова lambda в языке Python можно задавать лямбда-функции - анонимные функции, не описанные в пространстве имен. Если не вдаваться в подробности, то это функции без названия, предназначенные для однократного использования. Синтаксис их выглядит так:
lambda <аргументы> : <возвращаемое выражение>
У лямбда-функции может быть один или несколько аргументов, разделенных запятыми. После двоеточия (:) описывается возвращаемое выражение, в котором может использоваться (или не использоваться) описанный ранее аргумент. Роль возвращаемого выражения может играть любое выражение или даже другая функция.
Лямбда-функции играют важнейшую роль в Python. В коде реальных проектов они встречаются повсеместно: например, для сокращения кода или создания аргументов различных функций Python (например, map() или reduce()). Рассмотрим код в примере 1.15.
print((lambda x: x + 3)(3)) # 6
Сначала мы создаем лямбда-функцию, принимающую на входе значение x и возвращающую результат выражения x + 3. Результат представляет собой объект-функцию, которую можно вызывать точно так же, как любую другую. В соответствии с ее семантикой эту функцию можно назвать функцией-инкрементором. Результат ее вызова с аргументом x=3 - суффикс (3) в операторе print() в примере 1.15 - целочисленное значение 6. Далее мы будем постоянно использовать лямбда-функции, поэтому убедитесь, что хорошо понимаете, как они работают (хотя у вас еще будет возможность тщательнее разобраться в них).
На следующем шаге мы подведем некоторые итоги.