356 votes

Ignorer la valeur de retour multiple python

Disons que j'ai une fonction Python qui renvoie plusieurs valeurs dans un tuple:

 def func():
    return 1, 2
 

Y a-t-il un bon moyen d'ignorer l'un des résultats plutôt que d'assigner à une variable temporaire? Dites si la première valeur ne m'intéresse que s'il existe un meilleur moyen:

 x, temp = func()
 

715voto

Luke Woodward Points 20417

Vous pouvez utiliser x = func()[0] pour renvoyer la première valeur, x = func()[1] pour renvoyer la seconde, etc.

Si vous souhaitez obtenir plusieurs valeurs à la fois, utilisez quelque chose comme x, y = func()[2:4] .

317voto

Brian Clapper Points 11222

Une convention courante consiste à utiliser un "_" comme nom de variable pour les éléments du tuple que vous souhaitez ignorer. Par exemple:

 def f():
    return 1, 2, 3

_, _, x = f()
 

23voto

Evan Fosmark Points 17732

Rappelez-vous que lorsque vous retournez plus d'un objet, vous retournez vraiment un tuple. Donc, vous pouvez faire des choses comme ça:

 def func():
    return 1, 2

print func()[0] # prints 1
print func()[1] # prints 2
 

19voto

S.Lott Points 207588

Trois choix simples.

Évident

 x, _ = func()

x, junk = func()
 

Hideux

 x = func()[0]
 

Et il y a moyen de faire cela avec un décorateur.

 def val0( aFunc ):
    def pick0( *args, **kw ):
        return aFunc(*args,**kw)[0]
    return pick0

func0= val0(func)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X