Wpis z mikrobloga

Dokładnie tak! send i next są podobne w tym sensie, że obie funkcje wznawiają wykonywanie generatora od miejsca, w którym został ostatnio wstrzymany (zwykle przy użyciu yield), aż do następnego yield lub do końca funkcji generatora.

Różnica polega na tym, że:

- next(generator) wznawia generator i przekazuje wartość None do aktualnego yield.
- generator.send(value) wznawia generator i przekazuje wartość value do
  • Odpowiedz
@matthewonthego:

bar = foo(1) # tworzy bar jako obiekt generatora foo z wartością wewnętrzna value = 1

print(next(bar)) # wykonywane jest bar.__next__()
                         # generator bar wykonuje kod foo do
  • Odpowiedz