Jaka jest różnica między słowem kluczowym yield
w języku Python i yield
w C#?Różnica między wydajnością w Pythonie i wydajnością w C#
Odpowiedz
C# 's yield return
jest odpowiednikiem Pythona yield
, a yield break
jest po prostu return
w Pythonie.
Inne niż te drobne różnice, mają w zasadzie ten sam cel.
To może pomóc go zrozumieć: Iterators in C#, Python, and Ruby
przydatny artykuł, dzięki! – JackNova
Najważniejszą różnicą jest to, że wydajność python daje iterator, gdy jest ona w pełni potwierdził, że to koniec.
Ale zwrot z C# daje ci "Iterator" fabrycznie ", który możesz przekazać i używać go w wielu miejscach kodu, bez względu na to, czy został" zapętlony "raz wcześniej.
Weźmy ten przykład w Pythonie:
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]:
A w 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);
}
}
który daje: przerwa
0
1
2
0
1
2
- 1. Problem z wydajnością Hibernacji
- 2. Problemy z wydajnością SwiftyJSON
- 3. Problem z wydajnością RavenDb?
- 4. Rekurencja z wydajnością
- 5. Skutki związane z wydajnością przesyłu C#
- 6. Porównanie agregacji z wydajnością sumy w LINQ
- 7. Jak to działa z "wydajnością" w szczegółach?
- 8. Symfony2 i Twig renderują problemy z wydajnością
- 9. Jak działa GC z IEnumeratorem i wydajnością?
- 10. Jaka jest różnica między instancjamiRespondToSelector i respondsToSelector w Objective-C?
- 11. Subselect w Oracle 12c ze złą wydajnością
- 12. Jaka jest różnica między Java 6 i 7, która może spowodować problem z wydajnością?
- 13. Problem z wydajnością JavaFX TableView
- 14. Problem z wydajnością Java ByteBuffer
- 15. Różnica między Bytearray i List w Pythonie
- 16. Wystąpił problem z wydajnością kontaktów
- 17. Problemy z wydajnością Apache Mahout
- 18. Różnica między importem i __import__ w Pythonie
- 19. Problemy z wydajnością licząc pliki z System.IO.Directory.GetFiles()
- 20. Siatka Kendo: powolny problem z wydajnością
- 21. Czy kolejność spraw w instrukcji Switch może różnić się wydajnością?
- 22. Problemy z wydajnością interfejsu jQuery UI z tabelą w IE
- 23. Problemy z wydajnością migracji Angular 1.x
- 24. Problemy z wydajnością jonowego 2 przewijania
- 25. Problemy z wydajnością VS2010 + Resharper 5
- 26. HTML5/jQuery metronome - problemy z wydajnością
- 27. własność vs var: jakie są problemy z wydajnością
- 28. Problem z wydajnością wyrażenia regularnego Javy
- 29. Problem z wydajnością z joda-time DateTime.with *()
- 30. Problemy z wydajnością aktualizacji zbiorczej sqlalchemy
wydajność w C# nie jest dokładnie równoważne zamian Pythona. Jeśli twoja funkcja nie robi nic poza breakiem plonu (return w Pythonie), otrzymasz pusty Enumerator, podczas gdy None w python. –
To niewielkie syntaktyczne dziwactwo Pythona; możesz użyć 'return; wydajność ", aby uzyskać pusty generator. –
Również 'yield' w Pythonie jest wyrażeniem, które może odbierać wartości z iteracyjnej strony. 'return return' to oświadczenie. – Elazar