如何从函数返回两个值?
问问题
318 次
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 packing
和tuple unpacking
.
def foo():
return 'one','two'
a,b = foo()
您在这里所做的是,在从函数返回值时,您正在使用单个元组对象,并且您的逗号分隔值(此处为 string'one'
和'two'
)被打包到元组中,并且您正在返回包含对象的元组。(通过使用这个概念,您可以返回任意数量的对象)。这是tuple packing
.
在调用您的函数时,您正在通过将变量名称(此处a
和b
)关联到它来检索这些元组值,这被称为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 回答