Уроки Питона №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]

Профессиональный репетитор по математике, информатике и физике:

 

Александр Анатольевич Борцов 


КАК ВЫБРАТЬ:
связаться с Александром Анатольевичем
с помощью WhatsApp (лучше) или Telegram
+7-926-859-12-55 

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

Профессиональный математик и физик для студентов и школьников, кандидат физико математических наук, доктор технических наук по специальности радиофизика. Образование: Физический факультет МГУ им.М.В.Ломоносова с отличием, Специальность -Физика. Преподавал в  МЭИ, педагогический стаж более 16 лет. Является автором  монографии на английском языке "Laser Opto-Electronic Oscillator", 2020, изд. Springer. Автор более 60 ти научных публикаций в зарубежных и отечественных научных журналах по темам Квантовая Электроника, Квантовая радиофизика, Лазеры, Наноэлектроника, Лазерный оптоэлектронный генератор и др.. Хорошо   подготовит без посредников к вступительному экзамену в институте по математике и физике в 10 класс с помощью интересных методик по усовершенствованию памяти. 

 Обучал основам Python, MathLab, Data Science и Machine Learning. 

Более 320 учащихся  поступили «на бюджет» в университеты и  ВУЗы Москвы: ВШЭ, МЭИ, МГУ и ФИ и многие другиеОпыт репетитора по математике для студентов более 20 лет.Занятия ведутся дистанционно по Skype и Zoom|и очно в Москве м. Китай-город]. Есть большой опыт подготовки к экзаменам по физике и математике по англоязычным программам университетов (SAT,GMAT). По методикам и учебникам университетов готовил к экзаменам по математике и физике  студентов из Канады, Германии, Испании и  Нидерланды. Говорю по английски, владею английским, преподаю на английском математику и физику..
Занятия проводятся И очно в Москве м. Китай-город и по Skype и Zoom

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

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