Jestem ciekawa różnicy między używaniem instrukcji raise StopIteration
i return
w generatorach.Jaka jest różnica między podniesieniem StopIteration a instrukcją return w generatorach?
Na przykład, czy istnieje jakaś różnica między tymi dwiema funkcjami?
def my_generator0(n):
for i in range(n):
yield i
if i >= 5:
return
def my_generator1(n):
for i in range(n):
yield i
if i >= 5:
raise StopIteration
Zgaduję bardziej „pythonic” sposobem na to jest drugi sposób (proszę mnie poprawić, jeśli się mylę), ale o ile widzę oba sposoby podniesienia StopIteration
wyjątek.
jawny lub niejawny ('off koniec') 'return' jest zamierzony sposób, aby zakończyć generator. Jeśli PEP 479 zostanie zaakceptowany, wersja "podnieś stoperowanie" ostatecznie nie będzie działać tak jak teraz. –