Уроки Питона №7/10. Функции def в Питоне

Урок 10. Функции в Python

Урок посвящен созданию функций в Python и работе с ними (передача аргументов, возврат значения и т.п.). Также рассмотрены lambda-функций, их особенности и использование.

Что такое функция в Python?

По своей сути функции в Python практически ничем не отличаются от функций из других языков программирования. Функцией называют именованный фрагмент программного кода, к которому можно обратиться из другого места вашей программы (но есть lambda-функции, у которых нет имени, о них будет рассказано в конце урока). Как правило, функции создаются для работы с данными, которые передаются ей в качестве аргументов, также функция может формировать некоторое возвращаемое значение. 

Создание функций

Для создания функции используется ключевое слово def, после которого указывается имя и список аргументов в круглых скобках. Тело функции выделяется также как тело условия (или цикла): четырьмя пробелами. Таким образом самая простая функция, которая ничего не делает, будет выглядеть так.

def fun():

    pass

Возврат значения функцией осуществляется с помощью ключевого слова return, после которого указывается возвращаемое значение. Пример функции возвращающей единицу представлен ниже.

>>> def fun():

    return 1

>>> fun()

1

Работа с функциями

Во многих случаях функции используют для обработки данных. Эти данные могут быть глобальными, либо передаваться в функцию через аргументы. Список аргументов определяется на этапе реализации и указывается в круглых скобках после имени функции. Например операцию сложения двух аргументов можно реализовать вот так.

>>> def summa(a, b):

    return a + b

 

>>> summa(3, 4)

7

Р

>>> def z(x,y):

    return x*y

 

>>> def z(5,8)

40  

Рассмотрим еще два примера использования функции: вычисление числа Фибоначчи с использованием рекурсии и вычисление факториала с использованием цикла.

Вычисление числа Фибоначчи.

>>> def fibb(n):

    if n == 0:

        return 0

    elif n == 1:

        return 1

    elif n == 2:

        return 1

    else:

        return fibb(n-1) + fibb(n-2)

>>> print(fibb(10))

55

 

Вычисление факториала.

>>> def factorial(n):

    prod = 1

    for i in range(1, n+1):

        prod *= i

    return prod

 

>>> print(factorial(5))

120

Функцию можно присвоить переменной и использовать ее, если необходимо сократить имя. В качестве примера можно привести вариант использования функции вычисления факториала из пакета math.

>>> import math

>>> f = math.factorial

>>> print(f(5))

120

 

lambda-функции

Lambda-функция – это безымянная функция с произвольным числом аргументов и вычисляющая одно выражение. Тело такой функции не может содержать более одной инструкции (или выражения). Данную функцию можно использовать в рамках каких-либо конвейерных вычислений (например внутри filter()map() и reduce()) либо самостоятельно, в тех местах, где требуется произвести какие вычисление, которые удобно “завернуть” в функцию.

 >>> (lambda x: x**2)(5)

25

Lambda-функцию можно присвоить какой-либо переменной и в дальнейшем использовать ее в качестве имени функции.

>>> sqrt = lambda x: x**0.5

>>> sqrt(25)

5.0

Списки можно обрабатывать lambda-функциями внутри таких функций как map()filter()reduce(), о них мы ещё поговорим, а пока рассмотрим пример с map(). Функция map принимает два аргумента, первый – это функция, которая будет применена к каждому элементу списка, а второй – это список, который нужно обработать.

>>> list1 = [1, 2, 3, 4, 5, 6, 7]

>>> list(map(lambda x: x**3, list1))

[1, 8, 27, 64, 125, 216, 343]

Популярные репетиторы:

Рейтинг 5 из 5: 45 отзывов
 
Когда еще обучался в аспирантуре, c самого истока своей карьеры, я мечтал собрать в одно целое два моих основных интересов: Математику, Информатику и Обучение.

Инженер, математик для школьников и студентов, PhD, педагогический стаж более 19 лет, оживленно   подготовит без посредников контрольной работе по математике на 2 курс с помощью особо успешных схем по формированию памяти и ускорению мышления. 

Участвует в ведущих научных конференциях KDD, ICML и ECCV . Консультации по математическим программам JupyterLab, Sage и Mathematica . Впечатляюще поработал в стартапе по Машинному обучению и Нейронным сетям. Играючи программирует на R, GO и C/C++.

Занятия ведутся  в Москве м. Китай-город и дистанционно по TeamViewer. Опыт учителя по высшей математике для аспирантов более 20 лет. Более 320 учащихся  поступили «на бюджет» в ВУЗы Москвы: Школа Анализа Данных Яндекса, ВШЭ, МГУ и ФИ и т.д.. Speaks to English.

Запись на занятия

Ваше сообщение отправлено