Функции в Python
Чтобы не копировать один и тот же блок кода в нескольких местах программы, его описывают как функцию и потом вызывают по имени. Функция принимает входные значения, что-то с ними делает и обычно возвращает результат.
Что такое функции?
Удобнее всего представлять функцию как «чёрный ящик»: на вход подаём аргументы, внутри что-то происходит, наружу возвращается результат.

Создание и вызов функций
Базовый синтаксис
Функция в Python создаётся с помощью ключевого слова def:
Python 3.13# Простой пример функции def greet(): print("Привет, мир!") # Вызов функции greet()Привет, мир!
Здесь def объявляет функцию, greet — её имя, в скобках пишутся параметры (тут их нет), после двоеточия идёт тело функции с отступом.
Функции с параметрами
Функции могут принимать данные извне. Имена, которые вы пишете в скобках при объявлении, называются параметрами, а конкретные значения, подставленные при вызове, — аргументами. У функции ниже параметр один — name, а вызываем мы её дважды с разными аргументами: "Анна" и "Петр".
Python 3.13def greet(name): print(f"Привет, {name}!") greet("Анна")Привет, Анна!greet("Петр")Привет, Петр!
Возвращаемые значения
Функции могут возвращать результат своей работы с помощью оператора return:
Python 3.13# Функция с возвращаемым значением def add(a, b): return a + b # Использование результата функции result = add(5, 3) print(f"5 + 3 = {result}")5 + 3 = 8
return сразу завершает функцию: код после него не выполнится. Это удобно, чтобы выйти из функции пораньше при особых условиях:
Python 3.13def describe(value): if value < 0: return "отрицательное" return "неотрицательное" print(describe(-5))отрицательноеprint(describe(10))неотрицательное
Если в функции нет return, она всё равно возвращает значение — None. Это нормально для функций, которые ничего не вычисляют, а просто что-то делают (например, печатают на экран):
Python 3.13def say_hi(): print("Привет!") result = say_hi() print(result)Привет! None
Параметры функций
Позиционные и именованные аргументы
Python поддерживает два способа передачи аргументов в функцию:
Python 3.13# Функция с несколькими параметрами def describe_pet(animal_type, pet_name): print(f"У меня есть {animal_type} по имени {pet_name}.") # Позиционные аргументы describe_pet("собака", "Шарик")У меня есть собака по имени Шарик.# Именованные аргументы describe_pet(pet_name="Мурка", animal_type="кошка")У меня есть кошка по имени Мурка.
Параметры по умолчанию
Вы можете задать значения по умолчанию для параметров:
Python 3.13# Функция с параметрами по умолчанию def describe_pet(pet_name, animal_type="собака"): print(f"У меня есть {animal_type} по имени {pet_name}.") # Использование значения по умолчанию describe_pet("Шарик")У меня есть собака по имени Шарик.# Переопределение значения по умолчанию describe_pet("Мурка", "кошка")У меня есть кошка по имени Мурка.
Произвольное количество аргументов
Иногда вы не знаете заранее, сколько аргументов будет передано в функцию. На помощь приходят специальные параметры: звёздочка перед именем (*toppings) собирает все позиционные аргументы вместе, а две звёздочки (**user_info) — все именованные.
Python 3.13# Произвольное количество позиционных аргументов def make_pizza(*toppings): print("Начинки:", toppings) make_pizza("пепперони")Начинки: ('пепперони',)make_pizza("грибы", "зеленый перец", "дополнительный сыр")Начинки: ('грибы', 'зеленый перец', 'дополнительный сыр')# Произвольное количество именованных аргументов def build_profile(**user_info): print(user_info) build_profile(name="Анна", location="Москва", field="программирование"){'name': 'Анна', 'location': 'Москва', 'field': 'программирование'}
Все переданные значения Python собирает в одну структуру: позиционные — в набор значений, именованные — в пары «имя-значение». Что это за структуры и как перебрать их по одному, разберём в главах про коллекции и циклы.
Проверка понимания
Давайте проверим, насколько хорошо вы усвоили тему функций:
Что выведет следующий код?
Python 3.13def mystery(x, y=2): return x * y result = mystery(3) print(result)
Задания для самопроверки
Сразу под этой статьёй есть блок Задания для самопроверки. Здесь впервые нужно написать функцию целиком: строка def с именем и параметрами уже стоит в редакторе, а тело дописываете вы.
Откуда берутся значения
Значения, с которыми работает функция, приходят в её параметрах. Придумывать или вводить их не нужно: каждый тест сам вызывает функцию со своими значениями.

На вкладке теста видно всё сразу: какие значения он подставит, как вызовет функцию и какой результат ждёт. У каждого теста значения свои, и пройти должны все.
Результат нужно вернуть
Функция должна возвращать результат через return. Если напечатать его через print(), проверка тест не засчитает: она смотрит на возвращённое значение, а не на то, что появилось на экране.
