Функции в Python для начинающих и не только
Функции в Python — это фрагменты кода, которые можно вызывать по имени, передав им набор входных данных (аргументов). Они помогают разбивать большие программы на небольшие части и избегать многократного копирования одинаковых инструкций. Ниже мы разберёмся, как объявлять функции, передавать им аргументы и возвращать результаты.

Зачем нужны функции
Представьте, что вы работаете над проектом, в котором одна и та же задача (например, вычисление среднего значения или проверка корректности данных) возникает в разных местах. Без функций пришлось бы копировать один и тот же код несколько раз. Если же создать функцию, всё упрощается: один раз написали, где нужно — вызвали.
Функции сокращают объём кода, ускоряют разработку и делают её более понятной. Кроме того, их проще тестировать по отдельности, чем искать ошибку в монолитном куске программы.
Синтаксис функции в Python
Чтобы объявить функцию, используйте ключевое слово def и дайте ей имя. После имени в круглых скобках укажите параметры (переменные, которые примут значения), а в теле напишите, что функция должна делать. Для возврата значения используют оператор return.
Пример:
def greet(name): print(«Привет,», name)
greet(«Андрей»)
Если функция должна не просто печатать результат, а возвращать его, пользуйтесь return:
def multiply(a, b): return a * b
res = multiply(3, 5) print(res) # 15
Аргументы и параметры: в чём разница
Параметры — это переменные, указанные в определении функции.
Аргументы — реальные значения, которые вы подставляете при вызове.
Виды аргументов
1. Обязательные (позиционные)
При объявлении функции указываете определённое количество параметров и порядок. Например, если функция описана как def bigger(a, b), ей нужно передать ровно два аргумента:
def bigger(a, b): return a if a > b else b
print(bigger(2, 7)) # 7
2. Ключевые (именные)
Можно передавать аргументы, указывая их названия, причём порядок не имеет значения:
def paint_object(color, shape): print(f»Объект {shape} окрашен в {color}»)
paint_object(shape=»круг», color=»зелёный»)
3. По умолчанию
Параметры могут иметь стартовые значения, если при вызове их не укажут:
def space(planet, center=»Звезда»): print(f»{planet} вращается вокруг {center}»)
space(«Марс») # Марс вращается вокруг Звезда space(«Земля», «Солнце») # Земля вращается вокруг Солнце
4. Произвольное число аргументов
Параметр со звёздочкой (*args) собирает все переданные значения в кортеж:
def print_all(*args):
for item in args: print(item)
print_all(«apple», «banana», «cherry»)
Можно передавать сколько угодно аргументов или вообще ни одного.

Как вызвать функцию и не получить ошибку
Чтобы функция работала, нужно соблюдать три условия:
- Сначала объявите функцию с помощью def.
- Следите за количеством и порядком аргументов, если они требуются.
- Если в функции есть параметры без значения по умолчанию, их надо обязательно передать.
Если всё сделано правильно, Python поймёт, что и где нужно выполнить.
Оператор return и работа с результатами
Не всегда нужно просто распечатывать информацию. Часто мы хотим сохранить итог вычислений в переменную или передать её дальше. Для этого в конце функции пишут return. Если вы не используете этот оператор, функция по умолчанию возвращает None.
def add(a, b): return a + b
res1 = add(10, 5) res2 = add(2, 3) total = add(res1, res2) print(total) # 20
Мы сложили 10 и 5, получили 15. Потом сложили 2 и 3, получили 5. А в конце суммировали 15 и 5, получив 20.
Области видимости: где «живут» переменные
В Python принято говорить о локальной и глобальной области видимости.
Локальная: переменные, объявленные внутри функции, доступны только в ней.
Глобальная: переменные вне функции видны повсюду, если внутри функции они не переопределены.
Существует и промежуточный вариант — nonlocal, когда функция находится внутри другой функции (вложенная функция), и ей нужна переменная внешнего уровня (но не глобальная).
def outer():
x = 5
def inner(): nonlocal x x += 1 return x
return inner()
print(outer()) # 6

Lambda-функции (или анонимные функции)
Лямбда-функция позволяет описать небольшое действие «на лету», без явного def. Например:
square = lambda x: x ** 2 print(square(7)) # 49
Лямбда-функции удобно применять для фильтрации, сортировки или простых операций, когда нет смысла писать многострочную функцию.
Почему без функций в Python было бы тяжело
Повторное использование. Вместо копирования одного и того же куска кода мы просто вызываем функцию.
Лучше читаемость. Логика разбивается на небольшие сегменты, каждый из которых решает конкретную задачу.
Упрощённая поддержка. Ошибку в функции исправили один раз, и проблема решена во всей программе.
Гибкость. Функции легко комбинировать и передавать в них разные данные.
Дополнительные факты о функциях
Функцию можно хранить в структурах данных, например, в списках или словарях:
def shout(text): return text.upper() + «!»
funcs = [shout, str.lower]
Функцию можно передавать другой функции:
def greet(func): message = func(«Hello from Python!») print(message)
greet(shout)
Вложенные функции (функции внутри функций) могут обращаться к переменным внешней, но не глобальной области видимости.
Коротко о полезных курсах
Для тех, кто хочет развиваться дальше, можно поискать онлайн-программы по веб-разработке и Python. Например:
«Профессия Веб-разработчик + курс по Soft skills» (Skillfactory)
«Веб-разработчик с нуля» (Нетология)
«Профессия: разработчик сайтов» (ProductStar)
«Веб-разработчик с нуля» (Skypro)
Занятия обычно включают в себя практику, обратную связь от кураторов и много примеров на реальных задачах.
Итоги
Функции — важнейший инструмент в Python. Они экономят время и силы, улучшают структуру кода и помогают развивать сложные проекты. Попробуйте в своих задачах разбивать логику на отдельные небольшие функции и постепенно придёте к тому, что код становится куда проще и элегантнее.
Если хотите ещё больше погрузиться в тему, изучайте официальную документацию, читайте про продвинутые фишки, вроде декораторов, и обязательно тренируйтесь на реальных задачах. Удачи в вашем путешествии по миру Python!