Jestem wielkim fanem Pythona for...else syntax - zaskakuje, jak często jest to możliwe i jak skutecznie może uprościć kod.Używanie dla ... jeszcze w generatorach Pythona
Jednak nie zorientowali się piękny sposób na wykorzystanie go w generatorze, na przykład:
def iterate(i):
for value in i:
yield value
else:
print 'i is empty'
w powyższym przykładzie, chciałbym oświadczenie print
być wykonywane tylko wtedy, gdy i
jest pusty. Jednak jako else
tylko respektuje break
i return
, jest zawsze wykonywane, niezależnie od długości i
.
Jeśli w ten sposób niemożliwe jest użycie for...else
, jakie jest najlepsze podejście do tego, aby instrukcja print
była wykonywana tylko wtedy, gdy nic nie zostanie wygenerowane?
powrót jest dorozumiany na końcu generatora. Nie trzeba go uwzględniać. – recursive
Myślałem o tym, ale pomyślałem, że zostawię to tutaj wyraźnie. – Triptych
+1: "print i is empty" to czyjś problem, a nie generator. –