Функции, директивы def, return

Часто некоторый код нужно выполнить несколько раз. Либо мы хотим как-то изолировать некоторый код, и вызывать его в необходимом месте.

Этого можно достичь написанием функции.

Функция в python - объект, принимающий аргументы и возвращающий значение. Обычная функция определяется с помощью инструкции def.

Определим простейшую функцию:

def add(x, y):
    return x + y

После инструкции def идёт имя функции. Можно воспринимать это как присвоение переменной. Теперь в рамках программы add - это функция. Если после этого написать, например, add = 5, то функция будет "потеряна".

Затем, в скобках, пишутся аргументы функции. У нашей функции 2 аргумента, которые внутри функции будут называться x и y.

Эти аргументы не имеют никакого отношения к переменным, которые будут в главной программе. То есть, можно вызывать функцию, называя извне аргументы не x и y, а по-другому:

a = 1
b = 2
add(a, b)

Аргументов у Вашей функции может быть сколько угодно (или не быть вовсе).

Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y.

Внутри функции может быть какой угодно код, но, если мы хотим вернуть значение, мы обязаны написать return ЧТО_ТО. Если этого не написать, то функция вернёт специальное значение None (некоторый аналог NULL из других языков программирования).

Код после достижения return внутри функции не выполняется.

Внутри программы функция может быть вызвана. Например:

def add(x, y):
    return x + y

print(add(1, 2))  # Выведет 3

Значения по умолчанию

Аргументы можно инициализировать значениями по умолчанию:

def add(x, y=0):
    return x + y

Тогда, если мы вызовем функцию add(1), то выведется 1, так как внутри функции x = 1, y = 0

Именованные аргументы

Функцию можно также вызвать с аргументами по их имени, а не позиции, например:

def add(x, y):
    return x + y

print(add(x=1, y=2))  # Выведет 3
print(add(y=1, x=2))  # Выведет 3

Однако по имени можно передавать только последние аргументы. То есть, можно вызвать add(1, y=2), add(1, 2), add(x=1, y=2), но нельзя add(2, x=1).