0

如何从函数返回两个值?

4

5 回答 5

2

函数只能返回一个值。

将多个值打包到一个元组中并返回它很容易

def f(x, y):
    retval1 = x + y
    retval2 = x * y
    return retval1, retval2

您可以像这样解压返回的元组

sumval, prodval = f(5,7)
于 2013-10-01T06:17:59.627 回答
1

显然,您不能从函数返回两个值/对象。这里出现的概念是 ->tuple packingtuple unpacking.

def foo():
    return 'one','two'


a,b = foo()

您在这里所做的是,在从函数返回值时,您正在使用单个元组对象,并且您的逗号分隔值(此处为 string'one''two')被打包到元组中,并且您正在返回包含对象的元组。(通过使用这个概念,您可以返回任意数量的对象)。这是tuple packing.

在调用您的函数时,您正在通过将变量名称(此处ab)关联到它来检索这些元组值,这被称为tuple unpacking.

于 2013-10-01T06:40:07.637 回答
0
def foo():
    return 'foo','bar'

>> print foo()[0]
'foo'
>> print foo()[1]
'bar'

该函数返回返回值的元组,因此您可以像访问普通元组一样访问它们

于 2013-10-01T06:19:04.963 回答
0

以下是一些选项:

def a(): return 1, 2

def b(): return (1, 2)

def c(): return [1, 2]

def d(): return { 'value1': 1, 'value2': 2 }
于 2013-10-01T06:21:03.260 回答
0

一个函数可以返回一个元组,它可以包含值。这允许您从一个函数返回多个值。

例如,函数中有两个值:

def blah():
    a = 1
    b = 2

从那里可以创建一个包含这两个值的元组并返回它:

return (a,b)

这将返回一个元组,您可以将其分配给变量:

name1 = a
name2 = b

在您的情况下,也许您想这样做:

return (h, defaults)
于 2013-10-01T06:39:54.277 回答