
Лекция. Функции.
Преподаватель:
Фартышев Дмитрий Александрович

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

Функции без параметров
Требуется изобразить звездный прямоугольник размерами 5×7 (5 строк и 7 столбцов):
Первая версия кода
Вторая версия кода
Третья версия кода
print('*******')
print('*******')
print('*******')
print('*******')
print('*******')
for _ in range(5):
print('*' * 7)
print('*' * 7)
print('*' * 7)
print('*' * 7)
print('*' * 7)
print('*' * 7)

Функции без параметров
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
*******
for _ in range(5):
print('*' * 7)
print()
for _ in range(5):
print('*' * 7)
print()
for _ in range(5):
print('*' * 7)
- код громоздкий
- код дублируется
- придется менять во всех местах, если размеры прямоугольника поменяются

Функции без параметров
Для создания функции мы пишем такой код:
def draw _ box():
for _ in range(5):
print('*' * 7)
Вызов функции осуществляется по имени, следующим образом:
draw _ box()

Функции без параметров
Теперь для того чтобы изобразить 3 прямоугольника мы напишем
- код стал короче
- код стал читабельнее
- если нам потребуется изменить размеры прямоугольника, то необходимо будет внести изменения только в самой функции draw _ box()
draw _ box()
print()
draw _ box()
print()
draw _ box()
Мы можем вызывать функцию столько раз, сколько нам нужно

Имена функций
- Имя функции должно быть достаточно описательным, чтобы читающий ваш код мог обоснованно догадаться, что именно функция делает
- Python требует, чтобы вы соблюдали такие же правила, которые вы соблюдаете при именовании переменных
- Поскольку функции выполняют действия, большинство программистов предпочитает в именах функций использовать глаголы

Объявление функций
Функции объявляются с помощью ключевого слова def :
def название _ функции():
блок кода
- Первая строка объявления функции называется заголовком функции
- Начиная со следующей строки идет блок кода, который называется телом функции
Слово def происходит от слова define – определять

Объявление функций
Рассмотрим объявление функции:
def print _ message() :
print('Я - Артур,')
print('король британцев. ')
Тело функции состоит из двух инструкций print()
Вызов функции приведет к исполнению этих инструкций:
print _ message()

Локальные переменные
Локальными называются переменные, объявленные внутри функции и доступные только ей самой.
def print _ texas():
birds = 5000 # локальная переменная
print('В Техасе обитает', birds, 'птиц.')
Переменная birds является локальной для функции print _ texas().
Программный код за пределами функции к ним доступа не имеет.

Локальные переменные
Если программный код одной функции попытается обратиться к локальной переменной, принадлежащей другой функции, то произойдет ошибка.
def print _ texas():
birds = 5000
print('В Техасе обитает', birds, 'птиц.')
def print _ california():
print('В Калифорнии обитает', birds, 'птиц.')
вызов функции print _ california()
NameError: name 'birds' is not defined

Глобальные переменные
Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее функциям.
birds = 5000 # глобальная переменная
def print _ texas():
print('В Техасе обитает', birds, 'птиц.')
def print _ california():
print('В Калифорнии обитает', birds, 'птиц.')
вызов функций
В Техасе обитает 5000 птиц.
В Калифорнии обитает 5000 птиц.

Глобальные переменные
Большинство программистов согласны, что следует ограничить использование глобальных переменных либо не использовать их вообще. Причины следующие:
- глобальные переменные затрудняют отладку программы;
- функции, использующие глобальные переменные, обычно зависят от этих переменных;
- глобальные переменные затрудняют понимание программы.

Глобальные переменные
Большинство программистов согласны, что следует ограничить использование глобальных переменных либо не использовать их вообще. Причины следующие:
- глобальные переменные затрудняют отладку программы;
- функции, использующие глобальные переменные, обычно зависят от этих переменных;
- глобальные переменные затрудняют понимание программы.

Функции
Функция объявляется при помощи инструкции def , после неё пишется названии функции, которое может быть почти любым, после чего в скобках указываются аргументы функции.
У функции может быть указана инструкция return которая обозначает, то что функция возвращает.

Инструкция return
В Python инструкция return может встречаться лишь в теле функции, и за ней может следовать необязательное выражение.
Выполнение инструкции return приводит к прекращению работы функции, а значение выражения, если оно имеется, возвращается в качестве результата.
Если работа функции завершается достижением конца ее тела или посредством выполнения инструкции return , не содержащей выражения, то она возвращает значение None .
Разумеется, функция может вернуть это значение посредством инструкции return None .

Инструкция return: примеры использования
# или
def func(a, b):
if a b:
c = a - b
x = c*c
else:
x = a + b
return x
def sum(a, b):
return a + b
def func(a, b):
if a b:
x = a - b
return x*x
return a + b

Возвращаемые значения (return)
Функции в Python способны возвращать любой тип объекта.
В Питоне поддерживается возврат функциями сразу несколько значений. Достаточно перечислить их через запятую после инструкции return. Возвращаемым типом будет кортеж (tuple), который можно распаковать в переменные.
def calculate(num1, num2):
return num1 + num2, num1 - num2, num1 * num2
# для так называемой распаковки нескольких значений
# их следует присвоить равному количеству аргументов
res1, res2, res3 = calculate(7, 6)
print(res1, res2, res3)
13 1 42
print(type(calculate(7, 6)))

Функции
Использовании переменной w, которая задана глобально, ошибка не возникает, функция проводит расчет с заданными аргументами, глобальной и локальной переменными.

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

Функции
Можно также приравнивать значение переменной к возвращаемому значению функции.

Функции
В python можно возвращать из функции несколько значений

Спасибо за внимание!