2017-03-04 92 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