>>> if '' is not None:
is not test for object identity, i.e., will test if
None are the same object, which they are not, so the test returns
True in your case.
From the Python documentation:
is nottest for object identity:
x is yis true if and only if x and y are the same object.
x is not yyields the inverse truth value.
To put it another way, although
None have the same "truthiness", that is they both evaluate to
False if you do
bool(''), they to do not refer to the same object.