This is the problem with python's conflation of iterable and iterator, and maybe why so many programmers don't understand the difference when they pick up Java.
> This is the problem with python's conflation of iterable and iterator
It really is not. It’s just a natural outcome of imperative langages. If operations can have side-effects, then combinator behaviour will affect those side-effects.
You could do the same with iterables with side-effecting iterations.
It’s also perfectly logical to be able to iterate an iterator.