генераторы - это ленивые (по требованию) объекты, вы не исчерпали свой генератор t
, чтобы исчерпать свой генератор, вы можете использовать:
list(t)
# ['b', 'bo', 'bot', 'both']
теперь, если вы используете next(t)
, вы будете получить ожидаемое StopIteration
StopIteration Traceback (most recent call last)
<ipython-input-25-680ef78477e2> in <module>
6 t = prefixes('both')
7 list(t)
----> 8 next(t)
StopIteration:
утверждение if
"гарантирует", что у вас есть конец, и вы никогда не сделаете None[:-1]
, чтобы получить TypeError