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

Функции

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

8.5. Математические функции

В Python содержится математический модуль (module), который предоставляет большинство популярных математических функций. Перед тем, как его использовать, нам необходимо его импортировать:

>>> import math

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

>>> print math
<module 'math' (built-in)>

Модульный объект содержит функции и переменные, определенные в объекте. Для получения доступа к одной из этих функций, вам необходимо задать имя модуля и имя функции, разделенные точкой (period). Этот формат называется точечной нотацией (dot notation).

>>> ratio = signal_power / noise_power
>>> decibels = 10 * math.log10(ratio)
>>> radians = 0.7
>>> height = math.sin(radians)

В первом примере вычисляется логарифм по основанию 10 отношения "сигнал-шум". Модуль math также предоставляет функцию log, которая вычисляет логарифмы по основанию e.

Во втором примере вычисляется синус radians. Имя переменной подсказывает, что sin и другие тригонометрические функции (cos, tg и т.д.) принимают аргументы в радианах. Для перевода градусов в радианы, разделим на 360 и умножим на 2*pi:

>>> degrees = 45
>>> radians = degrees / 360.0 * 2 * math.pi
>>> math.sin(radians)
0.707106781187

Выражение math.pi получает значение переменной pi из модуля math. Значением этой переменной является приближенное с точностью до 15 знаков.

8.6. Добавление новых функций

Ранее мы использовали встроенные в Python функции. Теперь мы рассмотрим, как добавлять новые функции. Определение функции (function definition) задает имя новой функции и последовательность инструкций, которые выполняются, когда функция вызывается. Как только мы определили функцию, мы можем многократно ее использовать.

Например,

def print_lyrics():
print "I'm a lumberjack, and I'm okay."
print 'I sleep all night and I work all day.'

def – это ключевое слово, которое показывает, что далее следует определение функции. Имя функции - print_lyrics. Правила наименования функций такие же, как для переменных: возможны буквы, числа и некоторые знаки пунктуации, но в начале не может быть число. Вы не можете использовать ключевые (зарезервированные) слова в качестве имен функций. Имена функций и переменных не должны совпадать.

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

Первая строка определения функции называется заголовком (header), оставшаяся часть – телом (body) функции. Заголовок заканчивается двоеточием, тело функции имеет отступ. По договоренности, отступ всегда является четырьмя пробелами. Тело функции может содержать любое количество инструкций.

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

Если вы будете набирать функцию в интерактивном режиме, то Python для тела функции сделает отступы, а в конце необходимо будет ввести пустую строку.

Определение функции создает переменную с таким же именем.

>>> print print_lyrics
<function print_lyrics at 0xb7e99e9c>
>>> print type(print_lyrics)
<type 'function'>

Значением print_lyrics является функциональный объект (function object), который имеет тип 'function'.

Синтаксис вызова новой функции похож на вызов встроенной функции:

>>> print_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.

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

def repeat_lyrics():
       print_lyrics()
       print_lyrics()

Затем вызовем repeat_lyrics:

>>> repeat_lyrics()
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
< Самостоятельная работа 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))

 

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