title: Static behavior of iterators in Python
body: <p>I am reading <a href="https://rads.stackoverflow.com/amzn/click/com/1449355730" rel="nofollow noreferrer" rel="nofollow noreferrer">Learning Python by M.Lutz</a> and found bizarre block of code:</p>
  
  <pre><code>&gt;&gt;&gt; M = map(abs, (-1, 0, 1))
  &gt;&gt;&gt; I1 = iter(M); I2 = iter(M)
  &gt;&gt;&gt; print(next(I1), next(I1), next(I1))
  1 0 1
  &gt;&gt;&gt; next(I2)
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  StopIteration
  </code></pre>
  
  <p>Why when I call <code>next(I2)</code> it happens that iteration is already over? 
  Didn't I create two separate instances of <code>I1</code> and <code>I2</code>. Why does it behave like an instances of a <code>static</code> object?   </p>