Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4712 / 503 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Самостоятельная работа 4:

Функции

< Самостоятельная работа 1 || Самостоятельная работа 4: 1234

8.10. Плодотворные (fruitful) функции и void-функции

Некоторые из функций, которые мы используем, такие, как математические функции, возвращают результаты (приносят плоды); за неимением лучшего названия, я называю их плодотворными функциями (fruitful functions). Другие функции, подобные print_twice, выполняют некоторые действия, но не возвращают значение. Они называются void-функциями.

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

x = math.cos(radians)
golden = (math.sqrt(5) + 1) / 2

Когда вы вызываете функцию в интерактивном режиме, Python отображает результат:

>>> math.sqrt(5)
2.2360679774997898

Но если вы вызываете плодотворную функцию в скрипте и не сохраняете результат выполнения функции в переменной, то возвращаемое значение растворится в тумане!

math.sqrt(5)

Этот скрипт вычисляет квадратный корень из 5, но так как он не сохраняет результат в переменной и не отображает результат, то это не очень полезно.

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

>>> result = print_twice('Bing')
Bing
Bing
>>> print result
None

Значение None – это не тоже самое, что строка ‘None’. Это специальное значение, которое имеет собственный тип:

>>> print type(None)
<type 'NoneType'>

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

def addtwo(a, b):
       added = a + b
       return added
x = addtwo(3, 5)
print x

Когда скрипт выполнится, инструкция print напечатает "8". Внутри функции параметры a и b, в момент выполнения, будут содержать значения 3 и 5 соответственно. Функция подсчитывает сумму двух чисел и помещает ее в локальную переменную added. Затем с помощью инструкции return результат вычисления возвращается в вызываемый код, как результат выполнения функции. Далее результат присваивается переменной x и выводится на экран.

8.11. Зачем нужны функции?

Есть несколько причин, на основании которых программу стоит разбивать на функции.

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

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

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

  • Хорошо спроектированная функция может использоваться во множестве программ. Однажды написав и отладив функцию, вы можете использовать ее множество раз.

8.13. Словарь

Алгоритм (algorithm): обобщенный подход к решению категории проблем.

Аргумент (argument): значение, передаваемое функции, в момент ее вызова. Это значение присваивается соответствующему параметру в функции.

Тело функции (body): последовательность инструкций внутри определения функции.

Детерминистический (deterministic): относится к программе, которая выполняет одинаковые действия при одинаковых входных значениях.

Точечная нотация (dot notation): синтаксис для вызова функции из другого модуля.

Поток исполнения (flow of execution): порядок, в котором выполняются инструкции во время работы программы.

Плодотворная функция (fruitful function): функция, которая возвращает значение.

Функция (function): это именованная последовательность инструкций, которая выполняет некоторые полезные действия. Функции могут иметь или не иметь аргументы, могут возвращать или не возвращать результат.

Вызов функции (function call): инструкция, которая выполняет функцию. Она содержит имя функции и список аргументов.

Определение функции (function definition): инструкция, которая создает новую функцию; задает имя функции, параметры и инструкции для выполнения.

Функциональный объект (function object): значение, созданное определением функции. Имя функции является переменной, которая ссылается на функциональный объект.

Заголовок функции (header): первая строка в определении функции.

Инструкция импорта (import statement): инструкция, которая читает файл модуля и создает модульный объект.

Модульный объект (module object): значение, которое создает инструкция импорта, для предоставления доступа к данным и коду, определенном в модуле.

Параметр (parameter): имя, используемое внутри функции, которое ссылается на передающееся в качестве аргумента значение.

Псевдослучайный (pseudorandom): относится к последовательности чисел, которые похожи на случайные, но генерируются детерминированной программой.

Возвращаемое значение (return value): результат выполнения функции.

Void-функция (void function): функция, которая не возвращает результирующего значения.

< Самостоятельная работа 1 || Самостоятельная работа 4: 1234
Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Роман Баглай
Роман Баглай
Россия
Мирхожиддин Атажонов
Мирхожиддин Атажонов
Ангилья, Андижан