title: return and return None in a generator: PEP guidelines
body: <p>According to PEP 8 we should be consistent in our function declarations and ensure that they all have the same return-pattern, i.e. all should return an expression or all should not. However, I am not sure how to apply this to generators.</p>
  
  <p>A generator will <code>yield</code> values as long as the code reaches them, unless a <code>return</code> statement is encountered in which case it will stop the iteration. However, I don't see any use-case in which returning a value from a generator function can happen. In that spirit, I don't see why it is useful - from a PEP 8 perspective - to end such a function with the explicit <code>return None</code>. In other words, why do we ought to verbalize a return statement for generators if the return expression is only reached when the yield'ing is over? </p>
  
  <p>Example: in the following code, I don't see how <code>hello()</code> can be used to assign <code>100</code> to a variable (thus using the return statement). So why does PEP 8 expect us to write a return statement (be it <code>100</code> or <code>None</code>).</p>
  
  <pre><code>def hello():
      for i in range(5):
        yield i
  
      return 100
  
  
  h = [x for x in hello()]
  g = hello()
  
  print(h)    
  # [0, 1, 2, 3, 4]
  print(g)
  # &lt;generator object hello at 0x7fd2f285a7d8&gt;
  # can we ever get 100?
  </code></pre>