Pourquoi n'ai-je pas le même résultat? Les deux codes ne désignent-ils pas les mêmes choses?
version 1 p> version 2 p>
4 Réponses :
Dans le premier extrait, vous revenez de intérieur fort> le Dans le deuxième extrait, vous accumulez les résultats à un dictionnaire et renvoyez le dictionnaire qu'après la fin de la boucle. P> de code> pour code> la boucle, la terminaison prématuré et renvoie une chaîne formatée avec i = 0. p>
Non, ce n'est pas la même chose, dans le premier code, la valeur sera renvoyée sur la première itération elle-même. P>
tandis que dans le deuxième code, toutes les valeurs sont agrégées, puis retournées. P>
Pour savoir pourquoi cela ne fonctionne pas, vous devez connaître le fait que Donc, dans votre premier cas, le retour s'arrête sur la première itération I = 0 et retournera 0: 0. P>
Dans votre deuxième cas, vous stockez vos valeurs dans la valeur de la variable retour code> arrête pour code> boucle ou n'importe quel type de boucle. P>
code> et en faisant cela lorsque vous retournerez de la valeur, vous retournerez ensemble ensemble que pour la boucle passée de 0 à 10. p>
Le problème est donc que n'importe quelle boucle se termine lorsqu'il trouve le mot clé de retour, si vous souhaitez faire la même chose sur une ligne, vous devez utiliser la compréhension dict:
def fun(arg):
return {i: i**3 for i in range(0, arg+1)}
Qu'avez-vous de la version 1 et de la version 2? Nous devons savoir comment ils sont différents pour répondre.
La réponse simple car votre fonction frappe une commande code> de retour code>, il sort de la fonction. La version 1 indique à votre fonction de quitter la 1ère itération, tandis que la version 2 indique à votre fonction de revenir après avoir collecté toutes les valeurs.
Vous pouvez voir que la version 2 renvoie un dictionnaire pendant que la version 1 n'a aucun dictionnaire du tout. Comment pouvez-vous vous attendre à ce que ces codes fournissent le même résultat?