Тема 7: Функции и модули

Что такое функции

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

Хорошим аналогом функции можно назвать записку от мамы сыну-школьнику, который должен сделать определенные действия когда придет из школы (разогреть еду, пообедать, вымыть посуду, сделать домашнее задание).

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

Давайте рассмотрим все эти этапы подробнее.

Определение функции:

Продолжая аналогию с запиской, давайте разберемся как именно выглядит описание функции или того что надо сделать. В начале идет ключевое слово def сокращение от define - определять. Затем идет название функции. Название это просто имя, которое в дальнейшем мы будем использовать чтобы понимать какую группу инструкций нам брать.

О том как правильно выбирать названия для функций есть рекомендации сообщества Pythonarrow-up-right, ознакомьтесь с нимиarrow-up-right.

После имени функции с новой строки через отступ идет, так называемое "тело" функции - состав инструкций и команд, которые будут последовательно выполняться, после того как функция будет вызвана.

Давайте на примере записки, будем определять функцию "домашнее задание" - home_work.

def home_work():
    tb.say("Привет, сынок!")
    tb.say("Тебе задали задачи №12 и №14 по математике")
    tb.say("Реши их")

В этом примере мы определили функцию home_work, в "теле" которой содержатся инструкции сыну что надо сделать с домашней работой.

Вызов функции

Функция определена - записка написана, но когда она будет прочитана и выполнена? Тогда когда мы попросим это сделать в нашей программе. Для того чтобы выполнить ранее определенную функцию - ее надо вызвать. Для этого напишем имя нашей функции и после него поставим две круглые скобки. Такие круглые скобки после имени функции называются оператором вызова.

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

Возвращение значения

После того как функция исполнит весь код, который находится в ее "теле", она может (но не обязана) вернуть какое-то значение. Это может быть простое целочисленное значение типа 1 или 8, или значение с плавающей точкой 2,71 или 3,15, True или False или какая-то сложная многосоставная структура данных. Значение может быть каким то заранее определенным, например, 1 если функция отработала с ошибкой и 0 если все нормально. Или данное значение может быть рассчитано как результат работы функции.

В этом примере результатом решения задач были значения переменных res12 и res14, их мы и возвращаем в точку вызова нашей функции для дальнейшего использования в программе.

Использование возвращаемого значения

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

В данном случае мы говорим, что в переменные result_1 и result_2 будут присвоены возвращаемые функцией home_work значения, которые в дальнейшем мы распечатаем.

Параметры функций

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

На самом деле мы уже пользовались функциями и передавали в них параметры, например в случае с tb.say("Привет я робот") - здесь мы вызываем у робота функцию say и передаем ей "Привет я робот" как параметр.

Давайте модифицируем функцию home_work, чтобы она принимала параметры номера задач по математике, которые надо решить:

В этом примере, n1 и n2 являются параметрами функции home_work. При вызове функции мы должны передать два значения для этих параметров. Например:

При вызове функции с параметрами 17 и 24, робот скажет что задачи 17 и 24 заданы в качестве домашнего задания.

Обратите внимание, что после передачи параметра в функцию, внутри функции он будет называться так как мы его указали в определении функции. Т.е. в нашем случае это будут переменные n1 и n2 . Далее уже в самой функции мы можем делать с этими параметрами всё что захотим, складывать их, делить, умножать, передавать дальше в другие функции, которые мы можем вызвать внутри нашей функции и т.д.

Модули

В Python как и во многих других языках программирования есть возможность объединять функции в модули. Например, функции относящиеся к роботу объединены в модуль turtlebro_py

Для получения доступа к функциям этого модуля мы должны импортировать его

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

После этого мы можем обращаться к функциям модуля, используя синтаксис модуль.функция(). Например, чтобы вычислить квадратный корень числа, мы можем использовать функцию math.sqrt():

В этом примере мы импортировали модуль math и использовали его функцию sqrt() для вычисления квадратного корня числа 16.

Также мы можем импортировать не весь модуль, а лишь определенные функции или группы функций (объединённые в классы), для этого при импорте нам надо указать, какие именно функции мы хотим импортировать.

В данном случае из модуля math мы импортировали функцию расчета синуса, косинуса и число Пи.

На следующем уроке мы продолжим работать с функциями более подробно.

Last updated