限制Python函数/方法返回的值的数量

bho*_*bar 5 python function return-value

我正在使用一些代码,并意识到当单个方法返回4个值时,事情变得容易多了.使用传统语言,如C++和Java,其中方法只返回一个值,我开始怀疑

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

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

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

a, b, c, d, e = hello()
print a, b, c, d, e
Run Code Online (Sandbox Code Playgroud)


令人沮丧的是,我没有找到任何答案

Wil*_*sem 8

如果返回多个值,则实际返回一个元组.确实:

return 1,4,2,5
Run Code Online (Sandbox Code Playgroud)

是短的:

return (1,4,2,5)
Run Code Online (Sandbox Code Playgroud)

所以问题归结为一个元组可以携带多少项.答案可以通过以下方式获得:

import sys

sys.maxsize
Run Code Online (Sandbox Code Playgroud)

在32位系统上通常为2 31 -1 = 2 147 483 647,在64位系统上为2 63 -1 = 9 223 372 036 854 775 807.奇怪的是:它不是2 32 -1(或2 64 -1)所以这意味着从技术上讲,如果你有一台32位机器,并且你有4 GiB,列表本身只能填满一半记忆(当然列表中的元素可以负责填补剩余的一半).

当然元素也需要适合内存:如果你没有空间来存储500万个元素,你的程序无论如何都会崩溃.


Tig*_*kT3 6

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