title: Weird Try-Except-Else-Finally behavior with Return statements
body: <p>This is some code that is behaving peculiarly. This is a simplified version of the behavior that I've written. This will still demonstrate the weird behavior and I had some specific questions on why this is occurring.</p>
  
  <p>I'm using Python 2.6.6 on Windows 7.</p>
  
  <pre><code>def demo1():
      try:
          raise RuntimeError,"To Force Issue"
      except:
          return 1
      else:
          return 2
      finally:
          return 3
  
  def demo2():
      try:
          try:
              raise RuntimeError,"To Force Issue"
          except:
              return 1
          else:
              return 2
          finally:
              return 3
      except:
          print 4
      else:
          print 5
      finally:
          print 6
  </code></pre>
  
  <p>Results:</p>
  
  <pre><code>&gt;&gt;&gt; print demo1()
  3
  &gt;&gt;&gt; print demo2()
  6
  3
  </code></pre>
  
  <ul>
  <li>Why is demo one returning 3 instead of 1?</li>
  <li>Why is demo two printing 6 instead of printing 6 w/ 4 or 5?</li>
  </ul>