Функции

Функции

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()

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

И вот тебе маленькое задание, которое как раз таки и "воспитывает" это чувство разбития кода на мелкие функциональные фрагменты.
Напиши самый простой калькулятор, где операции ввода информации, вывода, меню пользователя (что вы хотите сделать с введенными двумя числами, например), и операции вашего калькулятора - это отдельные функции.
Если возникнут вопросы, или пожелания - пиши, не стесняйся :)

Report Page