Python

Сколько значений может возвращать функция?

Допустим у меня есть функция, которую я написал.
Количество значений, которые она возвращает, растет по мере написания программы.
Есть ли предел у этого? Или же функция, которую я написал, может возвращать хоть сотни значений?
SN
Suhrop Niyazov
63
Лучше возвращать значения в контейнере и не переживать по поводу их количества.
Ванорик Воложенин
Ванорик Воложенин
1 820
Лучший ответ
фунция возвращает только одно значение. но, поскольку это значение может быть любого типа (массивы, объекты и проч.), фактически кол-во реально возвращаемых (упакованных в одно) значений не ограничено.
Hismet Osman
Hismet Osman
39 560
Он имел ввиду результирующий объект (структуру)
Стас Тутик
Стас Тутик
21 331
Функция возвращает одно значение, но, как было написано выше, возвращаемым значением может быть контейнер. В некоторых языках (по крайней мере в C#) есть возможность использовать модификатор параметров out . В этом случае функция возвращает не одно значение.
Как то так:

Пример

Объявление метода out используется тогда, когда необходимо, чтобы метод возвращал несколько значений. В следующем примере используется ключевое слово out для возврата трех переменных с помощью одного вызова метода. Обратите внимание, что третьему аргументу присвоено значение null. Это позволяет методам возвращать значения на выбор.
C#

class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}

P.S. Только сейчас увидел, что категория вопроса "Python"
можно использовать yield..
Насколько я понимаю, функция может возвращать ссылку на объект, который может иметь любой тип и даже быть составным, например, кортежем словарей. Одновременно с этим, функция может что-то делать, подобно void-функции из других языков. Таким образом, функция в Питоне может сочетать в себе свойства void-функции и возвращать ссылку на объект любого типа.
Как раз, если думать питонически, то функция может вернуть один кортеж (tuple) с неограниченным числом элементов. И этот возвращаемый кортеж можно положить в другой кортеж и переменных. Например:
def f():
return 1, 2 // Или (1, 2)
a, b = f() // a = 1, b = 2
Из этой специфики вытекает самое короткое решение по перестановке переменных:
a, b = b, a