Дата обновления: 03 Февраля 2025
18.07.2023
2945
6.5 мин
author-avatar
Анна Уженкова

Функции в 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»)

Можно передавать сколько угодно аргументов или вообще ни одного.

Код на экране ноутбука

Как вызвать функцию и не получить ошибку

Чтобы функция работала, нужно соблюдать три условия:

  1. Сначала объявите функцию с помощью def.
  2. Следите за количеством и порядком аргументов, если они требуются.
  3. Если в функции есть параметры без значения по умолчанию, их надо обязательно передать.

Если всё сделано правильно, 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!

Оцените статью

4.5 5 (294 оценки)
Хочу стать Python-разработчиком!
Специально для вас мы собрали отдельную подборку лучших онлайн-курсов по Python на рынке и сравнили их по цене, продолжительности и отзывам студентов.
Посмотреть подборку