Je voudrais retourner deux valeurs d'une fonction dans deux variables distinctes. Par exemple:
def select_choice():
loop = 1
row = 0
while loop == 1:
print('''Choose from the following options?:
1. Row 1
2. Row 2
3. Row 3''')
row = int(input("Which row would you like to move the card from?: "))
if row == 1:
i = 2
card = list_a[-1]
elif row == 2:
i = 1
card = list_b[-1]
elif row == 3:
i = 0
card = list_c[-1]
return i
return card
Et je veux pouvoir utiliser ces valeurs séparément. Quand j'ai essayé de l'utiliser return i, card
, ça renvoie un tuple
et ce n'est pas ce que je veux.
else: continue
avant les déclarations de retourRéponses:
Vous ne pouvez pas retourner deux valeurs, mais vous pouvez retourner un
tuple
ou unlist
et le décompresser après l'appel:En ligne
return i, card
i, card
signifie créer un tuple. Vous pouvez également utiliser des parenthèses commereturn (i, card)
, mais les tuples sont créés par des virgules, les parenthèses ne sont donc pas obligatoires. Mais vous pouvez utiliser des parens pour rendre votre code plus lisible ou pour diviser le tuple sur plusieurs lignes. La même chose s'applique à la lignemy_i, my_card = select_choice()
.Si vous souhaitez renvoyer plus de deux valeurs, pensez à utiliser un tuple nommé . Cela permettra à l'appelant de la fonction d'accéder aux champs de la valeur retournée par son nom, qui est plus lisible. Vous pouvez toujours accéder aux éléments du tuple par index. Par exemple, dans la
Schema.loads
méthode, le framework Marshmallow renvoie unUnmarshalResult
qui est unnamedtuple
. Vous pouvez donc faire:ou
Dans d'autres cas, vous pouvez renvoyer un
dict
de votre fonction:Mais vous voudrez peut-être envisager de renvoyer une instance d'une classe utilitaire, qui encapsule vos données:
la source
À quoi vous attendriez-vous qu'il ressemble du côté appelant? Vous ne pouvez pas écrire
a = select_choice(); b = select_choice()
car cela appelerait la fonction deux fois.Les valeurs ne sont pas renvoyées "dans les variables"; ce n'est pas ainsi que Python fonctionne. Une fonction renvoie des valeurs (objets). Une variable n'est qu'un nom pour une valeur dans un contexte donné. Lorsque vous appelez une fonction et attribuez la valeur de retour quelque part, ce que vous faites est de donner un nom à la valeur reçue dans le contexte d'appel. La fonction ne met pas la valeur "dans une variable" pour vous, l'affectation le fait (peu importe que la variable ne soit pas "stockage" pour la valeur, mais encore une fois, juste un nom).
En fait, c'est exactement ce que vous voulez. Tout ce que vous avez à faire est de
tuple
démonter à nouveau.Il suffit donc de saisir les valeurs de la
tuple
.La façon la plus simple de procéder consiste à déballer:
la source
Je pense que ce que tu veux, c'est un tuple. Si vous utilisez
return (i, card)
, vous pouvez obtenir ces deux résultats en:la source
vous pouvez maintenant faire tout ce que vous voulez avec votre tuple.
la source
la source
Et ceci est une alternative.Si vous retournez en tant que liste, il est simple d'obtenir les valeurs.
la source
tu peux essayer ça
la source
Vous pouvez également renvoyer plusieurs valeurs à l'aide de list. Vérifiez le code ci-dessous
la source