On Nov 15, 2011, at 5:59 PM, Alan Meyer wrote:

> 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.

 I guess I meant it's aesthetics when it comes down to determining whether a 
module is None or not; a module is never going to evaluate to False under any 
feasible circumstances.  It's not an aesthetic difference when you consider 
that the global (or local) namespace may be polluted with other variables that 
have the same name as your module, but then your evaluation would be entirely 
invalid anyway.

But yes, in the general case, it's much more than an aesthetic difference, 
which is why I always write "if x is None" when I want to know if it's None 
(rather than False, 0, [], "", etc).  I have been bitten way too many times by 
doing the lazy thing to keep doing it.

- Dave

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

Reply via email to