Статья Автор: Александр Ф. Алейников

13.6.1 Функции с возвратом значения. Часть 3

Тема урока: функции с возвратом значения

  1. Функции с возвратом нескольких значений

Аннотация. Урок посвящен функциям с возвратом нескольких значений.

Функции с возвратом нескольких значений

В Python функции не ограничены возвратом всего одного значения. После инструкции return можно определить много выражений, разделенных запятыми:

return выражение 1, выражение 2, выражение 3 ...

Следующий программный код определяет функцию get_powers(num), которая принимает в качестве аргумента число num и возвращает его квадрат, куб и четвертую степень.

def get_powers(num):
    return num**2, num**3, num**4

Приведённый ниже код:

a, b, c = get_powers(2)
print(a)
print(b)
print(c)

выводит:

4
8
16

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

Приведённый ниже код:

def foo():
    return 10, 20, 30

a, b = foo()

приводит к возникновению ошибки:

ValueError: too many values to unpack (expected 2)

На самом деле, при указании нескольких выражений через запятую Python автоматически упаковывает их в особую коллекцию – кортеж, который затем можно распаковать в переменные. Кортежи изучаются в курсе для продвинутых.

Рассмотрим ещё один пример. Пусть требуется написать функцию, которая находит точку пересечения двух непараллельных прямых ax+by=e и cx+dy=f. Другими словами требуется решить систему уравнений:

{ax+by=ecx+dy=fНесложно прийти к решению этой системы:

{ax+by=ecx+dy=f    {x=debfadbcy=afceadbc

Программный код, решающий задачу, имеет вид:

def solve(a, b, c, d, e, f):
    x = (d * e - b * f)/(a * d - b * c)
    y = (a * f - c * e)/(a * d - b * c)
    return x, y

Приведённый ниже код:

xsol, ysol = solve(2, 3, 4, 1, 2, 5)
print('Решением системы являются числа', 'x =', xsol, 'y =', ysol)

выводит:

Решением системы являются числа x = 1.3 y = -0.2

 

 

Печать