Step 2 (S-15551)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/3372/step/2


S-15551-1.png

Всем привет! Это третья неделя курса по программированию на языке Python. Мы начнем ее с обсуждения функций. Мы с вами уже активно использовали некоторые функции, такие как print, input и range. Настало время научиться создавать свои функции.


И прежде чем мы научимся это делать, давайте обсудим зачем это вообще делать. С одной стороны, всего того, что мы имеем, уже достаточно для того чтобы написать практически любую программу. Мы умеем:

-- описывать переменные, присваивать им значения чисел, строк и списков,

-- создавать условные конструкции

-- создавать повторяющиеся конструкции с помощью циклов for и while

-- можем осуществлять ввод-вывод данных

всего это достаточно, чтобы реализовать практически любой алгоритм. Напрашивается вывод, что в принципе без функций можно обойтись. Зачем их тогда изучать? Почти во всех языках программирования существует механизм описания функции. Наверное это не спроста. Функции позволяют существенно упростить жизнь программиста. С помощью функций мы можем структурировать наши программы, разбить ее на логически завершенные части. Каждый раз, когда в программе встречается часть, описывающее какое-то действие, мы можем выделить ее в отдельную функцию. в дальнейшем мы сможем эту функцию повторно использовать в других местах этой или другой программы. Даже если повторного использования не будет, нам будет проще понять нашу программу. С помощью функций мы можем создавать новые примитивы, операторы внутри нашей программы. При этом, после написания функции, можно абстрагироваться от того, как она реализована, Достаточно помнить какие аргументы она принимает и что делает, а не держать полностью в голове алгоритм ее работы. Приведем пример - функция sorted. Она принимает на вход последовательность, а возвращает сортированный список. Это все что нам необходимо знать, чтобы использовать ее в своей программе.


Как описать функцию? Определим функцию, которая находит минимум среди двух чисел. Эту задачу мы решали ранее. Общий синтаксис описания функции выглядит следующим образом. Используется ключевое слово def, за ним следует название функции (может быть произвольным, действуют те же правила, что и для переменных), далее в круглых скобках описываются параметры (аргументы) функции. После этого ставим двоеточие. На последующих строках пишется тело функции, с отступом. В теле функции можно использовать ключевое слово return. Оно завершает работу функции, возвращает значение указанное после него в то место программы, откуда была вызвана функция.

S-15551-2.png

Теперь разберемся с тем, как вызывать функцию.

S-15551-3.png

Для вызова функции нам нужно указать ее имя и в круглых скобках передать аргументы. Наша функция min2 принимает на вход два параметра, поэтому в вызове ее мы передаем ей два целых числа 42 и 30. В качестве аргументов мы можем передавать как конкретные значения (числа, строки), так и переменные, произвольные выражения (например: a * b) или даже другие функции. После того как функция min2 будет вызвана, внутри ее в переменную a будет подставлено значение 42, а в переменную b значение 30. Далее эти значения будут использоваться внутри функции.

Приведем пример, когда в качестве аргумента передается результат вызова другой функции. Найдем наименьшее из трех чисел 42, 30, 25.

S-15551-4.png

Вначале сравним два числа 42 и 30. Результат сравнения передадим в функцию min2.

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