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