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