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. Python收益率與Ruby收益率
- 2. C中的收益率#
- 3. 不同進程之間的收益率
- 4. python中的[]和[,,]之間的區別
- 5. C中的/ +和+之間的區別?
- 6. Python中列表之間的區別
- 7. JS發電機:「收益率」與「收益率」有什麼不同?
- 8. C#收益率返回
- 9. 事件與收益率
- 10. C#中char和int之間的區別#
- 11. C#中Convert.ToString()和.ToString()之間的區別?
- 12. 「或」與Python中的按位運算符之間的區別
- 13. 在Java中的收益率返回
- 14. 錯誤:流收益率的NodeJS(Windows)中
- 15. 選擇和收集之間的區別
- 16. C#4.0中的障礙與C#3.0中的WaitHandle之間的區別?
- 17. (a不在b)與(不在b中)之間的區別。 Python
- 18. C#部分類與Objective C類別之間的區別?
- 19. 是什麼namedtuple收益和其類型名稱參數之間的區別?
- 20. 時間()與stime()之間的區別
- 21. C#「var」和C++「auto」之間的區別
- 22. 試圖瞭解Unity3D中的c#收益率
- 23. Scrapy/Python:以收益率處理值
- 24. tmux中的'C-b d'和'C-b D'之間的區別
- 25. 作爲作業有什麼收益? myVar的=(收益率)
- 26. CPU使用率和CPU利用率之間的區別?
- 27. Python - os.access和os.path.exists之間的區別?
- 28. basetring和types.StringType之間的python區別?
- 29. android sha224和python之間的區別sha224
- 30. python tkinter spinbox和optionmenu之間的區別
產量突破並不完全等同於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