Определение функции и return

Определение функции и return

До сих пор в программах всё шло линейно — один блок кода, один раз. Но реальные программы повторяют одни и те же действия снова и снова: проверить ввод, посчитать значение, вывести отчёт. Копировать код — плохая практика. Для повторного использования кода существуют функции.

Что такое функция

Функция — именованный блок кода, который можно вызвать из любого места программы. Вы уже использовали встроенные функции: print(), len(), int(), range(). Теперь научимся создавать свои.

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

def имя_функции(параметры):
    """Описание функции (docstring — необязательно)"""
    # тело функции
    return результат   # необязательно

Простейший пример:

def greet():
    print("Привет, мир!")

greet()   # вызов функции
greet()   # ещё раз — без копирования кода

Параметры и аргументы

Параметр — переменная в определении функции. Аргумент — конкретное значение при вызове.

def greet(name):   # name — параметр
    print(f"Привет, {name}!")

greet("Алиса")   # "Алиса" — аргумент
greet("Борис")

Функция с несколькими параметрами:

def add(a, b):
    result = a + b
    print(f"{a} + {b} = {result}")

add(3, 5)    # 3 + 5 = 8
add(10, 20)  # 10 + 20 = 30

Оператор return

return завершает функцию и возвращает значение вызывающему коду:

def add(a, b):
    return a + b

result = add(3, 5)   # result = 8
print(result)        # 8
print(add(10, 20))   # 30 — можно использовать в выражении

Функция без return (или с голым return) возвращает None:

def say_hello():
    print("Hello")

x = say_hello()
print(x)   # None

Возврат нескольких значений

Python позволяет вернуть несколько значений — они упаковываются в кортеж:

def min_max(numbers):
    return min(numbers), max(numbers)   # кортеж (min, max)

lo, hi = min_max([3, 1, 7, 2, 9])
print(lo, hi)   # 1 9

result = min_max([5, 2, 8])
print(result)          # (2, 8)
print(type(result))    # <class 'tuple'>

Ранний return

return можно использовать в середине функции для досрочного выхода. Это называется «ранний возврат» (early return) и позволяет избежать глубокой вложенности:

def divide(a, b):
    if b == 0:
        return None   # ранний выход при ошибке
    return a / b

print(divide(10, 2))   # 5.0
print(divide(10, 0))   # None

Вместо:

def divide_nested(a, b):
    if b != 0:
        result = a / b
        return result
    else:
        return None

Функции — это объекты

В Python функции — объекты первого класса. Их можно сохранять в переменных и передавать как аргументы:

def square(x):
    return x ** 2

# Функцию можно сохранить в переменную:
f = square
print(f(5))   # 25

# И передать другой функции:
numbers = [1, 2, 3, 4, 5]
squared = list(map(square, numbers))   # map применяет функцию к каждому элементу
print(squared)   # [1, 4, 9, 16, 25]

Польза функций

Без функций — дублирование кода:

# Проверка пароля для 3 пользователей:
p1 = "abc123"
if len(p1) >= 8 and any(c.isdigit() for c in p1):
    print("OK")

p2 = "qwerty"
if len(p2) >= 8 and any(c.isdigit() for c in p2):
    print("OK")

С функцией — один раз определить, много раз использовать:

def is_valid_password(password):
    if len(password) < 8:
        return False
    if not any(c.isdigit() for c in password):
        return False
    return True

for pwd in ["abc123", "qwerty", "secure99"]:
    print(f"{pwd}: {'OK' if is_valid_password(pwd) else 'слабый'}")

Проверь себя

Что вернёт следующая функция при вызове result = f(3, 4)?

def f(x, y):
    if x > y:
        return x
    return y

result = f(3, 4)

3 > 4 → False → пропускаем первый return → return y4. Функция возвращает максимум из двух чисел.

Итог

  • def имя(параметры): — определение функции; тело обязательно с отступом.
  • return значение — вернуть результат и завершить функцию.
  • Функция без return возвращает None.
  • Можно вернуть несколько значений через кортеж: return a, b.
  • Ранний return убирает лишнюю вложенность.
  • Функции — объекты: их можно хранить в переменных и передавать как аргументы.

В следующем уроке детально разберём позиционные и именованные аргументы функций.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике