如何从函数返回2个值

时间:2014-12-16 02:10:16

标签: python function return

我很难理解为什么我的函数不会存储我追加到列表中的I值?

代码是:

def numberofdays ():
    sum = 0
    leapyears = []
    for i in range (1901, 2000):
            if i%4 == 0:
                leapyears.append (i)
                sum = sum + 366

            else:
                sum = sum + 365
    return sum + 366  #to account for year 2000.
    return leapyears

当我致电print numberofdays()时,它只返回36525sum值。

2 个答案:

答案 0 :(得分:3)

使用return会立即退出某个功能。这意味着,return leapyears行永远不会到达,因为它上面有return sum + 366行。

如果要从numberofdays返回两个值,可以将它们放在一个元组中并返回:

return sum + 366, leapyears

以下是演示:

>>> def func():
...     return 1, 2
...
>>> func()
(1, 2)
>>> a, b = func()  # You can use iterable unpacking to give the values names
>>> a
1
>>> b
2
>>>

另外,正如@JonClements在评论中所说,看起来你实际上打算做range (1901, 2001)而不是range (1901, 2000)。请记住,range的第二个参数始终是独占的(不包括在内)。

最后,您可以使用sum = sum + 366替换sum += 366等代码。这确实是一个小问题,但后一种方法更加贪婪。 ;)

答案 1 :(得分:0)

return语句结束了该功能 - 只要它到达return,它就会全部结束。

要返回多个值,您可以return (sum+366,leapyears)