Python中的yield
關鍵字和C#中yield
關鍵字之間的區別是什麼?Python中的良率與C#中的收益之間的區別
22
A
回答
26
C#的yield return
相當於Python的yield
,並且yield break
僅僅是Python中的return
。
除了這些微小的差異之外,它們的目的基本相同。
13
6
最重要的區別是,蟒蛇產量爲您提供了一個迭代器,一旦完全重複該結束了。
但是,C#收益回報爲您提供了一個迭代器「工廠」,您可以將它傳遞並在代碼的多個位置使用它,而不必關心它之前是否「循環」過一次。
拿這個例子中的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]:
而在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);
}
}
這就給了你:在C#
0
1
2
0
1
2
相關問題
- 1. Tornado的「收益率」與asyncio的「收益率」之間的區別?
- 2. Python收益率與Ruby收益率
- 3. C中的收益率#
- 4. 在Python C代碼中,良率和不良部分的收益如何工作
- 5. 不同進程之間的收益率
- 6. 這些示例中的收益率和收益之間的差異
- 7. python中的[]和[,,]之間的區別
- 8. C中的/ +和+之間的區別?
- 9. 收益率(X)與(收益率(X)):圍繞產量括號在Python
- 10. Python中cStringIO.StringIO.write和String.StringIO.write之間的區別
- 11. Python中dir()和locals()之間的區別?
- 12. Python中列表之間的區別
- 13. Python的ASYNCIO,期貨收益率從
- 14. JS發電機:「收益率」與「收益率」有什麼不同?
- 15. C#收益率返回
- 16. 事件與收益率
- 17. C#中char和int之間的區別#
- 18. C#中Convert.ToString()和.ToString()之間的區別?
- 19. C++中map []和map.at之間的區別?
- 20. C++中+ =和= +之間的區別
- 21. Clojure中-toString與.toString之間的區別
- 22. iOS中1000與1000.0之間的區別
- 23. 「或」與「||」之間的區別?
- 24. ~~與Math.floor之間的區別()
- 25. 「或」與Python中的按位運算符之間的區別
- 26. 錯誤:流收益率的NodeJS(Windows)中
- 27. 在Java中的收益率返回
- 28. 收益率,FindAll和局部變量之間的比較
- 29. 在scrapy 1.3中,收益請求和退貨請求之間有什麼區別?
- 30. 選擇和收集之間的區別
產量突破並不完全等同於Python的回報。如果你的函數除了yield break(Python中的返回值)之外什麼都不做,你將在Python中獲得一個空的Enumerator而None。 – 2011-06-18 09:01:19
這是Python的一個小小的語法怪癖;你可以使用'return;產量「得到一個空的發電機。 – 2011-08-06 22:16:46
Python中的'yield'也是可以從迭代站點接收值的表達式。 「收益回報」是一個陳述。 – Elazar 2017-08-29 20:48:32