title: Python - logical evaluation order in "if" statement
body: <p>In Python we can do this:</p>
  
  <pre><code>if True or blah:
      print("it's ok") # will be executed
  
  if blah or True: # will raise a NameError
      print("it's not ok")
  
  class Blah:
      pass
  blah = Blah()
  
  if blah or blah.notexist:
      print("it's ok") # also will be executed
  </code></pre>
  
  <ul>
  <li>Can somebody point me to documentation on this feature?</li>
  <li>Is it an implementation detail or feature of the language?</li>
  <li>Is it good coding style to exploit this feature?</li>
  </ul>