Сделайте свой код проще для понимания, использования и поддержки

Если вы помните, в последнем уроке мы использовали некоторые встроенные функции, такие как print() или type(). Но вы также можете создавать свои собственные функции — называемые пользовательскими функциями или UDF.

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

В этом руководстве вы узнаете больше об определении и использовании собственных функций.

Когда и зачем использовать функции в коде

Большинство программистов выполняют задачи, которые достаточно велики, чтобы их можно было разбить на подзадачи.

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

Еще одна причина использовать функции — уменьшить количество строк, которые вы пишете.

Если вы собираетесь использовать какой-то код несколько раз в своем приложении, вы не хотите несколько раз копировать и вставлять одни и те же строки в свой код. Это неэффективно и выглядит некрасиво :) Запомните следующее предложение:

СУХОЙ — НЕ ПОВТОРЯЙТЕСЬ

Определение и вызов функций

Функция — это блок кода, выполняющий задачу. Он начинается с идентификатора def, за которым следует имя функции и круглые скобки (), с двоеточие ':' в конце строки.

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

  • Каждый оператор внутри вашей функции должен иметь отступ (4 пробела или одна табуляция).
  • Если вашей функции требуется один или несколько входных данных (называемых аргументами) для вычисления, вам нужно поместить их в круглые скобки().
  • Оператор return завершает работу функции, возвращая ноль, один или несколько выходных данных.

Когда вы запускаете функцию, вы говорите, что вы ее «вызываете». Как только функция будет вычислена, Python вернется к строке сразу после первоначального вызова функции.

Упражняться

Функция меню напитков

Например, вас попросили запрограммировать функцию Python для меню напитков в ресторане. Предположим, что маленький напиток стоит 1,50 доллара, средний напиток — 2,50 доллара, а большой напиток — 3,50 доллара.

Цена напитка определяется размером напитка. Таким образом, цена напитка может быть получена из размера.

Самый простой способ — сопоставить размер с числами 1, 2 и 3. Цена напитка Y равна 0,5 + X.

X равен 1, если напиток маленький, 2 — если средний, и 3 — если большой.

def get_drink_price(size):
    price = size + 0.5
    return price
get_drink_price(1)  #Returs 1.5
get_drink_price(2)  #Returs 2.5
get_drink_price(3)  #Returs 3.5

Когда приведенный выше код выполняется, он дает правильные результаты цены.

Давайте сделаем еще один шаг и правильно определим аргумент размера как S, M или L.

def get_drink_price(reminder='Please try S, M or L'):
    ok = input('Choose your drink size ?\n')
    if ok in ('s', 'S'):
        return 1.5
    elif ok in ('m', 'M'):
        return 2.5
    elif ok in ('l', 'L'):
        return 3.5
    else:
        print(reminder)
get_drink_price()  #Enter s, m or l to get the price of the drink

Вызов функций из других файлов — Модули

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

Модуль — это файл, содержащий определения и операторы Python. Имя файла — это имя модуля с суффиксом .py.

Конвертация температуры из градусов Цельсия в градусы Фаренгейта

Этот скрипт конвертирует температуру между Фаренгейтами и Цельсия. Чтобы создать конвертер Python для градусов Цельсия и Фаренгейта, вам сначала нужно выяснить, какую формулу использовать. Быстрый поиск в Google, и вы готовы к работе.

(°F — 32) x 5/9 = °C или, говоря простым языком, сначала вычтите 32, затем умножьте на 5, затем разделите на 9.

Например, используйте свой любимый текстовый редактор, чтобы создать файл с именем utils.py в текущем каталоге со следующим содержимым:

def convert_fahrenheit_to_celsius(fahrenheit):
    celsius = float(fahrenheit - 32) * (5 / 9)
    return celsius
def convert_celsius_to_fahrenheit(celsius):
    fahrenheit = (float(celsius) * 9 / 5 + 32)
    return fahrenheit

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

Важно, чтобы файл, содержащий определения функций, заканчивался расширением .py. Без расширения .py файл, в котором определены функции, не может быть импортирован.

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

Импортировать все функции в файл .py

Теперь войдите в интерпретатор Python и импортируйте этот модуль с помощью следующей команды:

import utils #Import all module functions utils.convert_fahrenheit_to_celsius()

Это не вводит имена функций, определенных в utils напрямую; он вводит туда только имя модуля utils. Используя имя модуля, вы можете получить доступ к функциям, используя нотацию «.»:

Импортировать определенную функцию в файл Python

Существует вариант оператора import, который импортирует имена из модуля непосредственно в таблицу символов импортирующего модуля. Например:

from utils import convert_fahrenheit_to_celsius()
from utils import * #Import all utils functions
convert_fahrenheit_to_celsius()

Модуль может содержать исполняемые операторы, а также определения функций. Эти операторы предназначены для инициализации модуля. Они выполняются только в первый раз, когда имя модуля встречается в операторе импорта.

Подробнее о модулях в следующем уроке :)

Заключение

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

Функции дают несколько преимуществ:

  • Разрешить выполнение одного и того же фрагмента кода несколько раз
  • Разбивайте длинные программы на более мелкие повторно используемые компоненты
  • Может быть передан и использован другими программистами

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

Надеюсь, вам всем понравилось читать этот урок. Спасибо за чтение. Как всегда, до следующего раза! 😀

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.