[БЕЗ ЗВУКА] Рассмотрим как именно функция может возвращать несколько значений. Сначала на простом примере. Допустим, нам нужно находить минимальные и максимальные значения в каком-то списке чисел и выдавать одновременно и минимум возвращать, и максимум. Давайте определим такую функцию. Назовем ее min_and_max. Определяем так эту функцию. И будем ее в качестве входного аргумента, будем передавать список чисел, list_of_numbers. Воспользуемся встроенными функциями Python, которые на самом деле считают минимум и максимум. Скажем, что минимум это min от list_of_numbers. Встроенная функция Python вернет нам одно это значение. Максимум это max от того же list_of _numbers, но в отличие от встроенной функции Python, наша будет возвращать одновременно и то, и другое. Пишем return minimum и через запятую пишу maximum. Вызываем. Пока мы просто определили функцию, ничего не сработало. А на самом деле minimum и maximum вместе в return это кортеж. Но скобки можно не писать, сработает и так, без скобок. Можно было бы написать и подчеркнуть, что это мы возвращаем кортеж в данном случае из двух чисел. Давайте посмотрим, как работает эта функция на каком-нибудь примере. Попробуем найти минимальное и максимальное значение вот в таком вот списке. Так как наша функция возвращает два значения, то и присваивать мы это должны двум переменным. Можно через запятую. Minimum value, maximum value равно чему-то, какому-то результату, который нам вернет функция, которую мы назвали min_and_max от вот такого списка. Запускаем. Пока мы ничего не напечатали, мы результата никакого, очевидно, не увидим. Делаем принт, и через запятую прямо и указывая минимальное и максимальное. Посмотрим. Вот, минимальная 1, максимальная 5 453. Да, очень похоже на правду. Если бы мы скобки поставили бы, то [БЕЗ ЗВУКА] все точно так же бы сработало, просто у нас то, что в виде кортежа \нам вернулось, записалось бы в переменное, но переменные по отдельности точно так же бы отображались. Можно было бы присвоить значение одной переменной- какая-нибудь переменная, условно, a назовем ее. Тогда в эту переменную a запишется кортеж из двух чисел, потому что нам же функция возвращает кортеж. Если она видит одну переменную, она этой одной переменной присваивает кортеж. Если бы она видела две переменные, и в кортеже, возвращаемом тоже два значения, значит, она присвоит каждой переменной соответствующее значения. Очень важно всегда присваивать переменные в том же порядке, в каком их возвращает функция. Если мы случайно возьмем и напишем три разных переменных- a, b и c, и попробуем распечатать хотя бы a. Запускаем. Нам выдается ошибка. Недостаточно значений для распаковки. Кортеж распаковывается в то количество переменных, которые возвращает функция. Если переменных слишком много, ничего не получится. Если переменная одна все сработает. Если бы наша функция возвращала бы, например, три значения, а мы присваивали бы это двум значениям. Попробуйте, посмотрите, что при этом получится. И еще одно интересное замечание, что так как мы возвращаем кортеж, необязательно это два числа. Может быть это число и строка. Мы можем вернуть одновременно список и список списков. Что угодно мы можем вернуть одновременно, так как эти переменные просто записываются в кортеж. Как использовать возвращение нескольких переменных для более полезных в нашем случае задач, мы сейчас рассмотрим. [БЕЗ ЗВУКА]