Quelle est la différence entre le mot-clé yield
en Python et le mot-clé yield
en C#?Différence entre le rendement en Python et le rendement en C#
Répondre
Le yield return
de C# est équivalent à yield
de Python, et yield break
est juste return
en Python.
Outre ces différences mineures, elles ont essentiellement le même but.
Cela peut vous aider à le comprendre: Iterators in C#, Python, and Ruby
article utile, merci! – JackNova
La différence la plus importante est que le rendement en python vous donne un itérateur, une fois qu'il est entièrement itérer qui est fini. Mais le retour de rendement C# vous donne un itérateur "usine", que vous pouvez passer et l'utiliser à plusieurs endroits de votre code sans vous soucier de savoir s'il a déjà été "bouclé" une fois.
Prenez cet exemple en python:
In [235]: def func1():
.....: for i in xrange(3):
.....: yield i
.....:
In [236]: x1 = func1()
In [237]: for k in x1:
.....: print k
.....:
0
1
2
In [238]: for k in x1:
.....: print k
.....:
In [239]:
Et en C#:
class Program
{
static IEnumerable<int> Func1()
{
for (int i = 0; i < 3; i++)
yield return i;
}
static void Main(string[] args)
{
var x1 = Func1();
foreach (int k in x1)
Console.WriteLine(k);
foreach (int k in x1)
Console.WriteLine(k);
}
}
Cela vous donne:
0
1
2
0
1
2
- 1. Utilisation du rendement en C#
- 2. Implémentation du rendement (rendement) en utilisant les suites de Scala
- 3. Threads dans l'espace utilisateur et le rendement
- 4. Recursion rendement
- 5. interface méthode fortement typé en utilisant le retour de rendement
- 6. Impossible de lier l'implémentation IEnumerable en utilisant le rendement
- 7. Est-ce que le rendement de python implique de continuer?
- 8. Le rendement C++/CLI peut-il être atteint?
- 9. Mauvais rendement total?
- 10. Réécrivez ceci pour chaque rendement à un rendement linq?
- 11. F # rendement efficace?
- 12. Collecte des ordures dans le rendement Méthodes
- 13. mise en œuvre Scala de rendement C# -comme avec « pour »
- 14. Conversion de retour de rendement C# en VB .NET
- 15. application Mesure du rendement
- 16. Ai-je besoin de mettre entre parenthèses le rendement en Ruby?
- 17. Rendement Retour Beaucoup?
- 18. Rendement avec Null
- 19. Ruby: ProC# appel vs rendement
- 20. Différence en python entre basestring et types.StringType?
- 21. Différence entre l'octet et le caractère en C
- 22. rupture de rendement; - comportement fou
- 23. Rendement de C# à C++, traitant des conteneurs
- 24. Comment fonctionne cette fonction avec un "rendement" en détail?
- 25. Abandonner le rendement pour éviter la condition dans la boucle
- 26. Rails: en utilisant "content_for" après le "rendement" correspondant mise en page
- 27. XQuery - le rendement prévu n'a été trouvée Laissez
- 28. Calcul du rendement en pourcentage moyen (APY) avec T-SQL
- 29. Rails vérifier si le rendement: zone est définie dans content_for
- 30. Différence entre long et int en C#?
rupture de rendement en C# est pas exactement équivalent au retour de Python. Si votre fonction ne fait rien sauf yield break (retour en Python), vous obtiendrez un Enumerator vide tandis qu'un None en python. –
C'est un petit peu syntaxique de Python; vous pouvez utiliser 'return; céder »pour obtenir un générateur vide. –
En outre, 'yield' en Python est une expression qui peut recevoir des valeurs du site d'itération. 'rendement rendement 'est une déclaration. – Elazar