Sono curioso della differenza tra l'utilizzo di raise StopIteration
e una dichiarazione return
nei generatori.Qual è la differenza tra sollevare StopIteration e un'istruzione return nei generatori?
Ad esempio, c'è qualche differenza tra queste due funzioni?
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
sto cercando di indovinare il modo più "divinatorio" per farlo è il secondo modo (per favore correggetemi se sbaglio), ma per quanto posso vedere entrambi i modi sollevare un'eccezione StopIteration
.
esplicita o implicita ('l'estremità') 'return' è il modo intendeva chiudere un generatore. Se si accetta PEP 479, la versione 'raise StopIteration' alla fine non funzionerà come ora. –