Step 4 (S-15552)

From Stepik Wiki
Revision as of 03:58, 29 July 2017 by Valeriy Shagur (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

S-15552-1.png

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

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

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

S-15552-2.png

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

S-15552-3.png

Как нам реализовать подобный функционал в собственных функциях?

S-15552-4.png

Напишем программу, которая будет находить минимальное из нескольких чисел. Заметим, что такая функция уже реализована в Python.

S-15552-5.png

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

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

S-15552-6.png

Функции могут иметь значение параметров по умолчанию. С такой функцией мы уже встречались. Это функция print, которая имеет параметр end. В случае, когда мы не указываем его при вызове, по завершении вывода функция print переводит строку. Если же мы вызовем функцию, передав значение end равное пустой строке, курсор останется в строке вывода. Как определить для функции значения аргументов по-умолчанию? Разберем на примере. Напишем модификацию функции range, которую назовем my_range.

S-15552-7.png

Функция принимает на вход два обязательных параметра - start и stop, указывающие на диапазон значений, и необязательный аргумент - step (размер шага), по-умолчанию равный 1. Наша функция возвращает список чисел. Значение по-умолчанию задается сразу в заголовке функции, используя оператор присваивания.

S-15552-8.png