Сегодня мы сделаем то, что сделать нужно было уже давно. Мы познакомимся с таким явлением как функции в Пайтоне.
Function in Python – функция в Пайтоне – так будет называться тема этого урока.
Если говорить по существу, функция это конструкция. Но если говорить _правильно_, функция это объект. Функцию в Пайтоне считают именно объектом.
Хотя, в этом и нет противоречия.
Ведь если взять, к примеру, кофеварку, то она тоже является одновременно и конструкцией, и объектом.
Кстати, именно с кофеваркой я и буду сравнивать функцию, чтобы понять, что оно такое – функция.
Представим себе современную кофеварку. Кофеварка это объект, который принимает от человека некий исходный материал — кофейное зерно или порошок молотого кофе. Также кофеварка принимает от человека воду, а из электросети – электричество.
Затем кофеварка производит определённые действия. И в итоге выдаёт человеку кофейный напиток.
Аналогично работает и функция в Пайтоне. Вместо кофейного зерна в функцию загружают так называемые «аргументы». А вместо кофейного напитка она выдаёт значение. Проведя ряд определённых действий, то есть операций.
Теперь – по порядку.
Чтобы сварить кофе, сначала нужно купить кофеварку. Или сконструировать её самостоятельно.
Точно так же, чтобы использовать функцию, сначала необходимо её сконструировать, создать.
Создание или объявление функции в Пайтоне начинается с использования словечка def. Def это сокращение от английского глагола define. А глагол define имеет значение «определить, задать, охарактеризовать, очертить, установить значние». К примеру, задать границы явления или определить понятие. По сути, можно сказать, что define значит «очертить границы явления» или даже «создать явление».
Итак, первое действие того, кто хочет создать функцию, будет выглядеть вот так.
def function_name( argument ):
Что в переводе на человеческий русский язык означает:
“Пайтон, создай мне функцию с названием function_name, которая получит от меня аргумент, который я назвал argument”. Дальше следует двоеточие, за которым указываются те операции, которые будут происходить внутри функции.
Это была модель. А реальное применение может выглядеть вот так:
def exponentiator(number):
return number ** 2
Сначала мы задали функцию под названием exponentiator (возводящая в степень) и дали ей аргумент, который называется number, а затем мы совершили ещё один важный шаг.
В функциях традиционно используется ещё один английский глагол. Это глагол «возвращать» — return. При помощи глагола return мы инструктируем функцию, что именно она должна возращать.
Вы уже догадались, что будет делать наша функция exponentiator?
Она будет возводить полученный аргумент, который называется number, во вторую степень, т.е. в квадрат. И возвращать результат этого возведения.
Давайте проверим. Итак, мы запускаем этот код на выполнение.
Для этого нам нужно просто ввести название функции, указав значение аргумента функции. То есть вместо слова number необходимо подставить реальное число.
exponentiator(10)
Выполнение произошло, но результат не был выведен на экран. А чтобы увидеть результат выполнения, мы должны воспользоваться выводом на экран, т.е. использовать предложение print().
print(exponentiator(10))
Мы можем поменять значение аргумента и выполнить функцию снова.
print(exponentiator(12))
И снова.
print(exponentiator(25))
Несмотря на то, что людям, не знакомым с темой функций, этот пример может показаться довольно сложным, на самом деле это была очень простая функция.
Дело в том, что функция может принимать неограниченное количество аргументов разного типа. Внутри функции также могут находиться очень разные по степени сложности конструкции.
Давайте рассмотрим немного более сложный пример.
Давайте высчитаем некую сумму налога по некоей прогрессивной шкале. Давайте представим, что для суммы до 1000 единиц, ставка налога составляет 10%, а для суммы от 1001 до 5000 единиц ставка налога составляет 15%. А в случае, если сумма превышает 5001 единицу, мы ставка составит уже 20%. Мы хотим создать такую функцию, которая будет принимать в качестве аргумента значение суммы и выдавать сумму налога.
Объявляем функцию.
def taxcalc(number):
if number <= 1000:
tax = number * 0.1
elif number >= 1001 and number <= 5000:
tax = number * 0.15
elif number > 5000:
tax = number * 0.2
return tax
И тестируем эту функцию
print (taxcalc(1000))
print (taxcalc(1100))
print (taxcalc(3000))
print (taxcalc(5000))
print (taxcalc(6000))
В следующих уроках мы продолжим изучение возможностей функций в Питоне.