title: Why does `for x in list[None:None]:` work?
body: <p>I have a script that attempts to read the begin and end point for a subset via a binary search, these values are then used to create a slice for further processing.</p>
  
  <p>I noticed that when these variables did not get set (the search returned None) the code would still run and in the end I noticed that a slice spanning from None to None works as if examining the entire list (see example below).</p>
  
  <pre><code>#! /usr/bin/env python
  list = [1,2,3,4,5,6,7,8,9,10]
  for x in list[None:None]:
    print x
  </code></pre>
  
  <p>Does anyone know why the choice was made to see the <code>list[None:None]</code> simply as <code>list[:]</code>, at least that's what I think that happens (correct me if I'm wrong). I personally would think that throwing a TypeError would be desirable in such a case.</p>