Функции
FoxСегодня будет побольше материала, чем обычно. Но для начала, маленький "пролог".
Хорошим тоном в программировании является разделение кода на отдельные блоки, которые крайне узконаправленные. Чтобы соблюдалась модульность и взаимозаменяемость. Грубо говоря, представьте конструктор Лего, так вот, функции - это и есть эти детальки. Рассмотрим это подробнее далее.
Функция - это такая часть кода, которая принимает в себя определенные значения, внутри проводит над ними нужные действия и на выходе вы получаете результат, который, обычно, описывается названием функции. Как пример:
def some_function(a,b): pass
Функции, да и вообще код в Питоне, славится своей читабельностью, потому что, к примеру:
- описывает среднее значение двух переменных A и B.
Java
double calculate_average(int a, int b) { return (a + b) / 2; }
Python
def calculate_average(a,b): return (a + b) / 2
Как мы видим, как минимум, нет обьявления типа. Это одна из проблем, лично мне как "Джависту", потому что ты сразу не видишь что возвращает эта функция и нужно пересмотреть тело самой функции. К чему я клоню? Всегда, осмысленно называй все функции, чтобы уже только по названию было понятно, что она делает, и что тебе возвращает в результате)
ВАЖНО: Заметьте, чтобы показать тело функции - в Java используются скобки - в Питоне же отступы. Одна из тех вещей, к чему он крайне чувствителен, и иногда из-за плохо проставленных отступов у вас просто не будет работать программа.
Вернемся к формальностям..
Чтобы обьявить функцию - достаточно написать
def func_name(): pass
Здесь pass
играет роль пустого тела функции, иначе код не заработает. В скобки же мы подаем входящие значения. И как вы могли догадаться, словo return
из предыдущего примера кода как раз и возвращает нам результат работы этой функции, но, есть случаи когда функция не должно ничего возвращать, а только допустим отобразить на экране результат своей работы
def print_func(): print('I'm working, and you?')
Благодаря возвращению, мы можем приписывать переменным значения, которые возвращает та или иная функция. Пример:
c = a + b
ИЛИ
def summa(a, b): return a + b c = summa(a, b) print(c)
ИЛИ
def summa(a, b): return a + b print(summa(a, b))
Конечно, разделение на функции при таких простых операциях - это абсурдно, но при большем количестве действий однозначно нужно использовать функции.
В добавок, существует такая опция, как использование функции в других функциях. Как например:
def number_sqr(a): return a**2 def print_number_sqr(a): print(number_sqr(a))
Так же, существует общепринятая структура - что все начитает свою работу из функции main()
. К примеру:
def do_smth(): print('Hello') def main(): do_smth() main()
Вы могли заметить алгоритм постановки отступов в данном примере. Так вот, очень часто будет такая лесенка, ибо, повторюсь - это важная особенность Питона, которая нам заменяет тучу скобок и точек с запятой.
И вот тебе маленькое задание, которое как раз таки и "воспитывает" это чувство разбития кода на мелкие функциональные фрагменты.
Напиши самый простой калькулятор, где операции ввода информации, вывода, меню пользователя (что вы хотите сделать с введенными двумя числами, например), и операции вашего калькулятора - это отдельные функции.
Если возникнут вопросы, или пожелания - пиши, не стесняйся :)