Подтвердить что ты не робот

Разница между доходностью в Python и доходностью в С#

В чем разница между ключевым словом yield в Python и ключевым словом yield в С#?

4b9b3361

Ответ 1

С# yield return эквивалентен Python yield, а yield break - это просто return в Python.

Помимо этих незначительных различий, они имеют в основном одну и ту же цель.

Ответ 3

Самое важное отличие заключается в том, что выход python дает вам итератор, как только он полностью повторится.

Но возврат к возврату С# дает вам итератор " factory" , который вы можете передать его и использовать в нескольких местах вашего кода, независимо от того, был ли он "зациклен" один раз перед.

Возьмем этот пример в 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]:

И в С#:

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);
    }
}

Это дает вам:

0
1
2
0
1
2