On 11/15/2011 4:20 PM, David Riley wrote:
...
       None was set to some other value.  The other value might have a type
       (such as a container) that could be false in a boolean context!

Obviously, that last bit doesn't apply to modules; they're not going to evaluate as False in 
general.  I just bristle when I see people writing "if x" when they really mean "if 
x is not None", perhaps because it's not The Right Way(tm)?  It mostly comes down to 
aesthetics, I guess.  Write what you really mean.

Actually Dave, as your quote from PEP 8 says, the difference is real. It's not just aesthetics.

Consider this:

x = None
if x:
  print('if x == true')
else:
  print('if x == false')
if x is None:
  print('x is None == true')
else:
  print('x is none == false')

y = ''
if y:
  print('if y == true')
else:
  print('if y == false')
if y is None:
  print('y is None == true')
else:
  print('y is none == false')

The result is:

if x == false
x is None == true
if y == false
y is none == false

    Alan
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to