Функции в Python.

Функция в Python – это объект, принимающий аргументы и возвращающий значение. Объявление функции начинается с ключевого слова def, что является сокращением от define. После него идет имя функции.

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

def help():
    print("""Доступные команды:
          -h - справка
          -a - добавить
          -d - удалить
          -p - вывести""")

print("Эта строка будет отображена раньше")

help()
input()

Тело функции пишется с отступом со следующей строки. Мы объявили функцию 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. Листинг:

def yn(message):
    resp = None
    while resp not in ("y", "n"):
        resp = input(message).lower()
    return resp

answer = yn("Форматировать диск? [y/n]")
print("Ваш выбор: ", answer)
input()

Повторное использование кода

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

Преимущества повторного использования кода:

  1. Позволяет повысить производительность труда программиста. На проект можно затратить меньше времени и усилий;
  2. Позволяет улучшить качество программ;
  3. Позволяет повысить эффективность ПО. если есть хороший код, который эффективно работает, то целесообразно использовать его, а не писать новый код.

Использовать свой код повторно можно с помощью модулей в 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 и может быть объединена с функцией следующим образом:

def sum(x, y):
    """Первая срока - заголовок

    Затем следует необязательная пустая строка и текст 
    документации.
    """
    return x+y
print(sum.__doc__)
sum.__doc__ += "some additional text"

input()

Команда docstring должна быть первой инструкцией после объявления функции. Ее потом можно будет извлекать или дополнять.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

2 ответа к “Функции в Python.”

[…] В этой статье мы разработаем простую “рисовалку” на Python. Программа будет примитивная, но мы потренируемся в создании макетов компоновки в tkinter, передаче аргументов в функцию-обработчик, а также применим анонимные функции. […]

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Связи между моделями.

Связи между моделями.

В нашем проекте есть одна модель под названием “Объявления”. В этой статье мы создадим новый класс модели “Rubric”, которая будет представлять рубрики объявлений. Допишем в

 
Параметры полей и моделей.

Параметры полей и моделей.

Для того, чтобы наша административная панель Django выглядела более понятна для обычного пользователя необходимо указать правильные названия полей. Наша созданная модель представляется непонятной аббревиатурой “Bbs”,

 
Административный web-сайт Django.

Административный web-сайт Django.

Административный web-сайт предоставляет доступ ко всем моделям, объявленным во всех приложениях, что составляют проект. С помощью данной панели можно просматривать, добавлять, править и удалять записи,

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: