From time to time we see advice to use 'is' when testing against None in 
Python. I was reminded of that by this checkin (which I should say I don't 
think is actually a problem)

-        self.default = default or update # default value for field
+        self.default = default==None and update or default


At any rate, I got bitten the other day, and I thought I'd pass on the 
experience just because it's a real-world example of (sometimes) a real need to 
use 'is'. I had a variable that defaulted to None, but could be bound to a 
library object (I don't remember just now what the object was).

I had written:

        if variable:
                blah

This often (mostly?) works, though of course it lumps None along with anything 
else that evaluates to False. However, in this particular case, I got an 
exception, because the bound object did not have a __nonzero__ method, which is 
what this test wants to see.

Changing to:

        if variable is None
                blah

fixed the problem.

As a relative novice Python handler, I'm trying to develop the habit of using 
'is' to test (None, True, False).

Reply via email to