Функция в Python — это объект, принимающий аргументы и возвращающий значение. Объявление функции начинается с ключевого слова def, что является сокращением от define. После него идет имя функции.
После имени в круглых скобках задается список параметров. Пример простой функции:
После имени в круглых скобках задается список параметров. Пример простой функции:
def help():
print("""Доступные команды:
-h - справка
-a - добавить
-d - удалить
-p - вывести""")
print("Эта строка будет отображена раньше")
help()
input()
Тело функции пишется с отступом со следующей строки. Мы объявили функцию help(), выводящую справку по использованию программы.
Интерпретатор при объявлении функции не выполняет ее, а выполнение функции начинается, когда будет встречен оператор её вызова (help()).
Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции):
Интерпретатор при объявлении функции не выполняет ее, а выполнение функции начинается, когда будет встречен оператор её вызова (help()).
Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции):
def newfunc(n):
def myfunc(x):
return x + n
return myfunc
new = newfunc(100) # new - это функция
print(new(200))
input()
# выведет: 300
Аргументы функции
Функция может принимать произвольное количество аргументов или не принимать их вообще.
Напишем функцию sum(), которая принимает два параметра и возвращает сумму этих параметров. Листинг:
def sum(a, b):
res = a + b
return res
print(sum(2,2))
input()
# выведет: 4
Оператор return может возвращать, как результат вычисления выражения, так и значение переменной.
Рассмотрим еще один пример. Напишем код, который будет запрашивать у пользователя определенный ввод и он будет запрашивать до тех пор, пока пользователь не введет y или n. Листинг:
Рассмотрим еще один пример. Напишем код, который будет запрашивать у пользователя определенный ввод и он будет запрашивать до тех пор, пока пользователь не введет y или n. Листинг:
def yn(message):
resp = None
while resp not in ("y", "n"):
resp = input(message).lower()
return resp
answer = yn("Форматировать диск? [y/n]")
print("Ваш выбор: ", answer)
input()
Повторное использование кода
Основное назначение функций — это повторное использование кода. Если вам необходимо использовать один код несколько раз, тогда целесообразно оформить данный код в виде функции без параметров или с параметрами.
Преимущества повторного использования кода:
- Позволяет повысить производительность труда программиста. На проект можно затратить меньше времени и усилий;
- Позволяет улучшить качество программ;
- Позволяет повысить эффективность ПО. если есть хороший код, который эффективно работает, то целесообразно использовать его, а не писать новый код.
Использовать свой код повторно можно с помощью модулей в Python. После создания модулей можно будет подключать свой код к любой Python-программе и вызывать уже существующие в нем функции вместо написания новых для каждого проекта.
Переменное число параметров
Представим, что нужно написать функцию принимающую любое число параметров. Для этого используется аргумент «*». Пример:
def avg(first, *rest):
return (first + sum(rest)) / (1 + len(rest))
print(avg(1,2))
print(avg(1,2,3,4))
input()
# выведет:
1.5
2.5
В данном случае rest-это кортеж, содержащий все дополнительно переданные аргументы. Код считает его последовательностью и работает как с последовательностью.
Функция может принять любое число именных параметров, тогда перед именем ставится **:
Функция может принять любое число именных параметров, тогда перед именем ставится **:
def variable_len(**args):
print(type(args))
for x, value in args.items():
print(x, value)
variable_len(apple = "яблоко", bread = "хлеб")
input()
# Выведет apple яблоко bread хлеб
Анонимные функции
Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее.
Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной. Пример:
func = lambda x, y: x + y
print(func(1, 2))
input()
# выведет: 3
add = lambda x, y: x + y
print(add(2,2))
input()
# выведет: 4
lambda функции, в отличие от обычной, не требуется инструкция return, а в остальном, ведет себя точно также:
func = lambda *args: args
print(func(1, 2, 3, 4))
input()
# выведет: (1, 2, 3, 4)
Как правило, lambda используется в контексте некоторой другой операции, такой как сортировка или сокращение данных.
Возвращаем несколько значений
Иногда нужно, чтобы функция вернула несколько значений. Для этого просто возвращайте кортеж, например:
def fun():
return 1, 2, 3
a, b, c = fun()
print(a, b, c)
input()
# выведет: 1 2 3
Данная функция возвращает одно значение, но в виде кортежа.
Документирование функции
Определим функцию:
def sum(s,y): return x + y
Если изучить ее, обнаружатся два скрытых метода (которые начинаются с двух знаков нижнего подчеркивания), среди которых есть __doc__.
Он нужен для настройки документации функции. Документация в Python называется docstring и может быть объединена с функцией следующим образом:
Он нужен для настройки документации функции. Документация в Python называется docstring и может быть объединена с функцией следующим образом:
def sum(x, y):
"""Первая срока - заголовок
Затем следует необязательная пустая строка и текст
документации.
"""
return x+y
print(sum.__doc__)
sum.__doc__ += "some additional text"
input()
Команда docstring должна быть первой инструкцией после объявления функции. Ее потом можно будет извлекать или дополнять.
Видео по уроку:
Видео по уроку: