/
Программирование
/
Курс Python
/

Создание (определение) функций

Python: Создание (определение) функций

До этого момента мы использовали только уже готовые функции: print(), len(), max() и другие. Но в Python можно создавать свои собственные функции и пришла пора научиться это делать.

Зачем определять функции

Допустим, у нас есть несколько похожих участков кода:

print('Hello, Hexlet!')
print('Hello, world!')
print('Hello, Python!')

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

def say_hello(name):
    print(f'Hello, {name}!')

Теперь мы можем вызывать ее с разными аргументами:

say_hello('Hexlet')   # => Hello, Hexlet!
say_hello('world')    # => Hello, world!
say_hello('Python')   # => Hello, Python!

Вроде бы количество кода не стало меньше, но появилось кое-что другое. Если эта функция будет использоваться в разных местах, то при необходимости изменить текст, нам будет достаточно поправить только определение функции. И чем сложнее будет задача и чем чаще она будет использоваться в разных местах, тем важнее нужно выделять логику в свои функции.

Синтаксис определения

def имя_функции(параметры):
    тело
def greet(name):              ← имя функции и параметр
    return 'Hello, ' + name   ← тело функции
│         │
ключевое  возврат
слово     значения

Ключевое слово def начинает определение. В имя_функции допускается любое имя, как у переменной; в скобках указывается список параметров через запятую. После двоеточия располагается тело функции с отступом в 4 пробела, в котором пишется обычный Python-код.

В Python отступы имеют синтаксическое значение. Они показывают, какой код относится к телу функции. Посмотрите на пример:

def say_hi():
    print('Hi!')

print('Программа продолжается…')

Здесь функция say_hi() определена, но print('Программа продолжается…') не относится к функции, так как у него нет отступа. Он будет выполнен сразу при запуске программы, независимо от вызова say_hi().

Чтобы say_hi() сработала, ее нужно явно вызвать:

def say_hi():
    print('Hi!')

say_hi()  # => Hi!
print('Программа продолжается…')

Пример: функция для печати среднего арифметического

Сейчас мы реализуем простую функцию, которая вычисляет и печатает среднее арифметическое двух чисел. Среднее арифметическое представляет собой сумму чисел, деленную на их количество. Например, среднее от 6 и 4 считается так: (6 + 4) / 2 = 5.

def print_average(a, b):
    total = a + b
    average = total / 2
    print(average)

print_average(6, 4)  # => 5.0

Здесь a и b являются входными параметрами, total содержит их сумму, average получается делением суммы на 2, а print() выводит результат.

При вызове print_average(6, 4) на экран выведется 5.0.

Переиспользование и читаемость

Функции помогают избегать дублирования и делают программы более понятными. Название функции само по себе говорит, что она делает. Это особенно важно в больших проектах, где код читают другие программисты (или вы сами через месяц).

Задание

Сайт выводит приветствие для каждого посетителя. Реализуйте функцию say_hello(), которая выводит на экран фразу Hello, World!.

say_hello() # => Hello, World!

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

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются