title: Python: yield and yield assignment
body: <p>How does this code, involving assignment and the yield operator, work?  The results are rather confounding.</p>
  
  <pre><code>def test1(x): 
      for i in x:
          _ = yield i 
          yield _
  def test2(x): 
      for i in x:
          _ = yield i 
  
  r1 = test1([1,2,3])
  r2 = test2([1,2,3])
  print list(r1)
  print list(r2)
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>[1, None, 2, None, 3, None] 
  [1, 2, 3]
  </code></pre>