Функция - одно из базовых понятий программирования, и сейчас я вам расскажу, что это такое.
В математике функция - это соответствие между элементами двух множеств, но нам не нужны сложные определения.
Функция - это алгоритм, который совершает какие-то действия с входными данными и отдаёт что-то на выходе (программисты говорят "возвращает", поэтому я тоже буду использовать это слово).
Возьмём всё тот же пример вычисления среднего. Алгоритм нами уже задан в предыдущих постах. Что подразумевает под собой выделение этого алгоритма в функцию? А ровно то, что мы определяем, какие исходные данные (и какие типы данных) нам нужны (какой-то набор значений) и какой результат (какого типа) нам возвращается (одно значение).
Функции бывают чистыми и нет (назовём их "нечистыми" для простоты). Чистая функция - это такая, результат которой не зависит от каких-либо внешних условий, а только от передаваемых в неё данных. Ещё чистая функция никак не изменяет то, что творится вокруг неё.
Давайте посмотрим на пример в реальной жизни. Представьте, что вы заказываете пиццу на дом. Вы звоните по телефону, говорите какую пиццу хотите, диктуете адрес и вам называют стоимость доставки. Виды пицц и их количество - это входные данные. Сумма заказа - это то, что получается на выходе. А оператор, который с вами разговаривает - выполняет функцию по высчитыванию этой стоимости (сам он это делает или нет - вопрос не очень важный в этом случае).
В жизни "чистых функций" фактически не бывает. Мы все взаимосвязаны друг с другом так или иначе и сильно зависим от внешних обстоятельств. Поэтому сумма вашего заказа может зависеть от времени суток, от доступности ингредиентов или даже от вашей персональной скидки.