2017-03-04 1 views
4

je travaillais avec un code et rendu compte que les choses sont devenues beaucoup plus facile quand une seule méthode est de retour 4 valeurs. Travailler avec des langages traditionnels comme C++ et Java où les méthodes renvoient une seule valeur, je me suis demandéLimitation du nombre de valeurs renvoyées par une fonction Python/méthode

Y at-il une limite au nombre de valeurs retournées par une fonction Python?

Des trucs comme ceux-ci fonctionnent sans effort. Y a-t-il une limite à cela?

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

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


assez Stragely, je ne trouve pas de réponse à cette question

Répondre

7

Si vous renvoyez plusieurs valeurs, renvoie un nombre. En effet:

return 1,4,2,5 

est l'abréviation de:

return (1,4,2,5) 

La question se résume à combien d'articles un tuple peut transporter. La réponse peut être obtenue avec:

import sys 

sys.maxsize

Il est généralement 2 -1 = 2 147 483 647 sur un système 32 bits et 632 -1 = 9 223 372 036 854 775 807 sur un système 64 bits. Ce qui est étrange, c'est: ce n'est pas 2 -1 (ou 2 -1) ce qui signifie que techniquement parlant si vous avez une machine 32 bits, et que vous avez 4 GiB en place, la liste elle-même ne peut remplir que la moitié de la mémoire (bien sûr, les éléments de la liste peuvent être chargés de remplir la moitié restante).

Bien sûr, les éléments doivent également tenir dans la mémoire: si vous avez plus d'espace pour stocker cinq millions d'éléments, votre programme se bloque de toute façon.

+1

je suis venu à réaliser tout cela. Merci! – bholagabbar

6

fonctions Python reviennent une seule valeur: une référence à un objet. Cet objet peut être de n'importe quel type, y compris un tuple (qui est ce qui est construit avec return 1, 2, 3, 4, 5). La taille de l'objet est uniquement limitée par la mémoire disponible de votre ordinateur.

+0

Ah vous avez raison. Cela fonctionne '>>> x = (1, 2, 3) >>> a, b, c = x >>> imprimer a, b, c' – bholagabbar