2017-03-04 34 views
4

我正在使用一些代码,并意识到当单个方法返回4个值时事情变得更容易。使用C++和Java等传统语言,其中方法只返回一个值,我开始想知道限制Python函数/方法返回的值的数量

Python函数返回的值的数量是否有限制?

像这样的东西毫不费力地工作。它有限制吗?

def hello(): 
    return 1, 2, 3, 4, 5 

a, b, c, d, e = hello() 
print a, b, c, d, e 


Stragely够了,我没有发现任何回答这个问题

回答

7

如果你返回多个值,你实际上返回一个元组。事实上:

return 1,4,2,5 

是短期的:

return (1,4,2,5) 

所以问题归结为元组有多少项目可以携带

import sys 

sys.maxsize

它通常是2 -1 = 2 147 483 647在32位的系统上和2 -1 = 9 223 372 036 854 775 807:答案可以与获得一个64位系统。奇怪的是:它不是2 -1(或2 -1),所以这意味着从技术上讲,如果你有一台32位机器,并且你有4个GiB,那么它自己的清单本身只能填满一半的内存(当然列表中的元素可以负责填充剩余的一半)。

当然,这些元素也需要适应内存:如果你没有剩余空间来存储五百万个元素,你的程序无论如何都会崩溃。

+1

我开始意识到这一点。谢谢! – bholagabbar

6

Python函数只返回一个值:一个对象的引用。该对象可以是任何类型的,包括元组(这是用return 1, 2, 3, 4, 5构造的)。对象的大小仅受计算机可用内存的限制。

+0

啊,你是对的。这工作'>>> x =(1,2,3) >>> a,b,c = x >>> print a,b,c' – bholagabbar