Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Использование функций в Python

3719
9 минут чтения
Средний рейтинг статьи: 5

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

Как создать функцию

Давайте сразу же начнем с примера, а затем перейдем к объяснению:

    

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

    

В качестве аргументов могут использоваться не только целые, но и дробные числа, допустим:

    

Теперь разберем, как устроен сам код. Функция объявляется с помощью ключевого слова def, за которым следует имя функции, а в скобках указываются параметры (их может быть любое число), которые будут принимать различные аргументы из пользовательского ввода. Далее за закрывающей скобкой обязательно следует двоеточие, после чего с новой строки с отступом (если пишете код в редакторе, отступ будет добавлен автоматически) начинается функциональный блок, в котором описывается, что данная функция делает. Мы использовали оператор return, назначением которого является явный возврат аргументов. Обратите внимание, что за оператором return идет инструкция, что программе делать с аргументами. В данном случае — умножать.

Практический пример использования функций Питона

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

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

    

Теперь представим, что книг купили целую стопку. При этом число покупателей с каждым днем становится всё больше, поэтому, пока вы подсчитываете сумму одному покупателю, остальные начнут выражать недовольство. Тут-то и задумаешься, как бы сделать так, чтобы сумма в чеке подсчитывалась автоматически, исходя из добавленного количества товаров и их стоимости. Раз нужно, значит, можно, как говорит один из классиков обучения Python. Допустим, у нас купили семь наименований, причем некоторые книги заказали по два раза:

    

Как видим, появились новые переменные, а список покупки вынесен в отдельный блок. Теперь, когда будет пробиваться новый чек, всё, что потребуется для автоматического подсчета суммы, — это вбить названия книг, их количество и стоимость за штуку. А после того, как ввели все позиции в чеке, выполняем вызов нашей функции с параметром, который мы оформили в виде кортежа выше:

    

и получаем такой вывод:

    

Вот и всё, сумма была подсчитана автоматически. Рассмотрим приведенный выше код подробнее.

  • Переменная total хранит в себе сумму покупки и изменяется по мере того, как в кортеж добавляются новые значения.
  • С помощью оператора цикла for задается набор переменных, которые хранят в себе следующие значения: название товара (a), количество (b) и цену за единицу товара (c).
  • После этого дается команда на печать. Буква f в строках с оператором print (между прочим, тоже функция, но встроенная, о которых речь пойдет ниже) означает, что используются f-строки, но пока нам достаточно знать только то, что это удобный метод форматирования, к тому же код сам по себе понятен.
  • Следующая строка не должна вас удивить: это инструкция для подсчета суммы путем перемножения количества товаров на их стоимость и сложения получившейся цифры с промежуточным итогом.
  • Далее опять применяется f-строка в качестве метода форматирования текста, а про блок с кортежем, содержащим необходимые данные для подсчета суммы очередной покупки, мы уже говорили.

Облачные серверы

Масштабируемые вычислительные ресурсы
по всему миру с почасовой оплатой.

Особенности функций в Python

Ключевые преимущества:

  • Нет необходимости повторять отдельные куски кода, которые к тому же могут быть достаточно объемными.
  • Функции могут вызываться столько раз, сколько это необходимо, причем даже подряд.
  • Будучи разделенными на несколько функциональных блоков, большие программы становятся значительно проще в отслеживании.

Минусов у функций в Python практически нет, разве что они могут быть не всегда удобны. Так, в ряде случаев проще использовать генераторы, поскольку некоторые функции (например, filter) могут возвращать итераторы, а чтобы этого избежать, приходится писать дополнительный код. Например, введем в IDLE:

    

Вот что мы получим в результате:

    

Для корректного вывода отвечающих условиям элементов придется «оборачивать» это выражение таким образом:

    

Встроенные функции Python

Почти наверняка вы их использовали уже на своем первом уроке по Питону. Не верите?

    

Так вот, print — это функция, а заключенный в скобки "Hello, World!" — ее аргумент. Встроенных функций (то есть объектов с уже готовым кодом) в Python сотни и даже тысячи, если подключать дополнительные библиотеки. Знать их все не обязательно, тем более всегда можно почитать документацию, если в коде встретилась незнакомая. Тем не менее ряд общих функций выучить придется, поскольку эти служебные слова являются важнейшей частью языка, без которых вы не напишете ни одной полезной программы. Познакомим вас с некоторыми распространенными встроенными функциями.

  • len выдает длину, то есть количество элементов определенной последовательности: строки, списка, кортежа, диапазона или массива.
    
  • str используется для объединения строк и чисел (по умолчанию в Python так делать нельзя, но с помощью str можно):
    
  • int преобразует строки в целые числа. Полезным свойством int является то, что она округляет любое число до целого, правда, всегда делает это в сторону нуля, например:
    
  • float предлагает обратный процесс: преобразует целочисленные значения в числа с плавающей запятой, что может понадобиться для определенных вычислений:
    
  • tuple преобразует списки в кортежи:
    
  • dict позволяет создавать новые словари. Вот пример создания словаря из списка кортежей при помощи dict:
    
  • range создает диапазоны чисел, что может быть полезно, например, для перебора числовых значений:
    

У range три параметра: первые два задают границы числового диапазона, а третий (опциональный) отвечает за интервал вывода. В данном случае мы сделали так, чтобы выводились числа от 0 до 30 с интервалом 3. При этом второе значение не включается в список (это особенность работы range), а чтобы его включить, нужно чуть расширить диапазон, вот так:

    

Использование результата функции в другой функции Python

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

    

Давайте введем название какой-нибудь другой компании:

    

Теперь передаем созданную функцию во встроенную функцию help, чтобы узнать, что она делает:

    

Как видим, всё достаточно просто.

Размещайте Python-проекты в облаке Timeweb Cloud

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Что мы узнали

В этом туториале мы познакомились с тем, как работают функции в Python 3: научились создавать и использовать их, узнали про встроенные инструменты, а также рассмотрели пример передачи функций как объектов в другие функции. Изучив функции глубже, вы сможете оценить всю их пользу при написании даже относительно небольших приложений.

3719
9 минут чтения
Средний рейтинг статьи: 5

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server