Close

Урок 8. Функции

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

Немного математики

Мы уже использовали математические выражения в предыдущих уроках. Например, мы вводили выражения в строку чтобы получить ответ:

Чтобы увидеть результат вычислений, мы должны вводить выражение заново.

Создадим скрипт arithmetic.py и запишем в него следующие инструкции:

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

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

Когда вы сохраните и выполните скрипт вы увидите следующее:

Минутку… 5 / 2 = 2… Это вычисление не выглядит точным. К сожалению, разработчики механизма деления сделали его немного нелогичным для человека, но технически правильным. Когда мы делим два целых числа, то результат является также целочисленным, а остаток просто отбрасывается.

Чтобы решить эту задачу с понятным нам результатом, необходимо добавить следующую строку в начало скрипта:

Рекомендуем, добавлять ее в каждый скрипт, где вы используете деление целых чисел. В python версии 3.x эта задача решена привычным для человека образом. from __future__ — означает что мы импортируем функционал из будущей версии.

8_1

Если сейчас вы все же хотите совершить целочисленное деление, то используйте оператор // вместо одинарного / , например:

Это «удвоение оператора» действительно только для деления. Если вы решите применить,например, оператор **, то он возведет число в степень:

Напишем собственную функцию

Одним из многочисленных достоинств Python является легкость манипуляций с различными фрагментами кода, похожими на кубики Lego. Кубики Lego в программировании — это функции.

Функция — это, в общем, миниатюрная программа, получающая одни данные и производящая другие. Мы уже видели несколько примеров функций, например, len(). Она принимает переменную и возвращает длину этой переменной.

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

def — это сокращение от define, что переводится, как «определить». Эта инструкция говорит о том, что мы объявляем функцию. В этом случае, мы дали функции имя square и она принимает один параметр названый number. Входной параметр называется аргументом функции. Функции могут иметь и более одного аргумента.

Вторая строка кода, является первой в теле функции. В этой строке в функции мы объявляем новую переменную sqr_num и записываем в нее значение number, возведенное в квадрат. Следующая строка возвращает значение переменной sqr_num.

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

В строке utput_num = square(input_num) мы вызываем нашу функцию. Передаем ей аргумент input_num, равный 7. Функция производит вычисления квадрата и сохраняет его в переменной output_num.

8_2_

Следует обратить внимание на то, что код в теле функции сдвинут отступами от края строки. Python с помощью отступов определяет эти строки как принадлежащие функции.

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

На второй строке возникнет ошибка: NameError: name ‘square’ is not defined.

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

Создадим функцию с двумя аргументами. Аргументы отделяются друг от друга запятыми. Следующая функции вернет разность между двумя аргументами.

Вызовем эту функцию:

Мы увидим результат работы -2.

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

Подсказки к функциям

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

Затем выполнив help() для нашей функции вы увидите следующее:

Конечно, вы можете использовать help() для многих других функций, не только написанных вами.

 

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

Поделиться: