Функции

Параметры по умолчанию и несколько возвращаемых значений

Содержание курса

Процедура написания функции с опциональным параметром и множественным возвратом

Теперь объединим оба механизма в одну функцию. Разберём это пошагово на конкретном примере — напишем функцию, которая возводит число в степень, но при отрицательном показателе возвращает особый статус.

Шаг 1. Объявить сигнатуру: обязательные параметры идут первыми, необязательные — после.

def safe_power(base, exp=2):

base — обязательный, exp — необязательный со значением по умолчанию 2.

Шаг 2. В теле вычислить результат и сформировать статус.

def safe_power(base, exp=2):
    if exp < 0:
        result = None
        status = 'ошибка: отрицательный показатель не поддерживается'
    else:
        result = base ** exp
        status = 'ok'

Здесь два пути: отрицательный показатель даёт None и строку с описанием, неотрицательный — вычисленное значение и 'ok'.

Шаг 3. Написать return result, status — Python сам упакует значения в кортеж.

def safe_power(base, exp=2):
    if exp < 0:
        result = None
        status = 'ошибка: отрицательный показатель не поддерживается'
    else:
        result = base ** exp
        status = 'ok'
    return result, status

Один return в конце — он всегда возвращает кортеж из двух элементов, независимо от ветки.

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

# Только обязательный аргумент — exp берёт значение по умолчанию 2
r, s = safe_power(4)
print(r, s)  # 16 ok

# Оба аргумента — exp переопределён
r, s = safe_power(4, 3)
print(r, s)  # 64 ok

# Отрицательный показатель
r, s = safe_power(4, -1)
print(r, s)  # None ошибка: отрицательный показатель не поддерживается

Шаг 5. Использовать статус перед тем, как работать с результатом.

r, s = safe_power(4)
if s == 'ok':
    print(f'Результат: {r}')
else:
    print(f'Не удалось выполнить операцию: {s}')

Проверка статуса до использования результата — это и есть смысл паттерна «результат + статус»: вызывающий код знает, можно ли доверять значению r. Без такой проверки вы рискуете использовать None там, где ожидаете число, — и получить ошибку уже в другом месте программы, далеко от источника проблемы.

Распаковка работает по тому же правилу, что в предыдущей секции: количество переменных слева должно совпадать с количеством возвращаемых значений.

Вся процедура в сжатом виде: сначала обязательные параметры, потом необязательные; в теле — вычисление и статус; один return с несколькими значениями через запятую; при вызове — распаковка в нужное количество переменных; дальше — работа со статусом.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.

Параметры по умолчанию и несколько возвращаемых значений — Python для новичков — Latorn