Возможно ли, чтобы функция python возвращала более 1 значения? - PullRequest
3 голосов
/ 24 декабря 2010

Я изучаю использование функций в Python и хочу узнать, возможно ли вернуть более 1 значения.

Ответы [ 4 ]

7 голосов
/ 24 декабря 2010

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

>>> def foo():
...     return 1, 2, 3, 4 # Returns a tuple
>>> foo()
(1, 2, 3, 4)

>>> a, b, c, d = foo()
>>> a
1
>>> b
2
>>> c
3
>>> d
4

В Python 3 у вас есть более продвинутые функции:

>>> a, *b = foo()
>>> a
1
>>> b
[2, 3, 4]
>>> *a, b = foo()
>>> a
[1, 2, 3]
>>> b
4
>>> a, *b, c = foo()
>>> a
1
>>> b
[2, 3]
>>> c
4

Но этоне работает в Python 2.

7 голосов
/ 24 декабря 2010

Вы можете вернуть значения, которые хотите вернуть, в виде кортежа.

Пример:

>>> def f():
...     return 1, 2, 3
... 
>>> a, b, c = f()
>>> a
1
>>> b
2
>>> c
3
>>>
1 голос
/ 24 декабря 2010

Да.

def f():
   return 1, 2


x, y = f()
# 1, 2
1 голос
/ 24 декабря 2010
def two_values():
    return (1, 2)

(a, b) = two_values()
...