Тема урока: функции с возвратом значения
- Функции с возвратом нескольких значений
Аннотация. Урок посвящен функциям с возвратом нескольких значений.
Функции с возвратом нескольких значений
В 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 автоматически упаковывает их в особую коллекцию – кортеж, который затем можно распаковать в переменные. Кортежи изучаются в курсе для продвинутых.
Рассмотрим ещё один пример. Пусть требуется написать функцию, которая находит точку пересечения двух непараллельных прямых и . Другими словами требуется решить систему уравнений:
Несложно прийти к решению этой системы:
Программный код, решающий задачу, имеет вид:
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
