How to "test" NoneType in python?
I have a method that sometimes returns a NoneType value. So how can I question a variable that is a NoneType? I need to use if method, for example
if not new:
    new = '#'
I know that is the wrong way and I hope you understand what I meant.
So how can I question a variable that is a NoneType?
 Use is operator, like this  
if variable is None:
Why this works?
 Since None is the sole singleton object of NoneType in Python, we can use is operator to check if a variable has None in it or not.  
 Quoting from is docs,  
 The operators is and is not test for object identity: x is y is true if and only if x and y are the same object.  x is not y yields the inverse truth value.  
 Since there can be only one instance of None , is would be the preferred way to check None .  
Hear it from the horse's mouth
Quoting Python's Coding Style Guidelines - PEP-008 (jointly defined by Guido himself),
 Comparisons to singletons like None should always be done with is or is not , never the equality operators .  
if variable is None:
   print 'Is None'
-
if variable is not None:
   print 'Isn't None'
 It can also be done with isinstance as per Alex Hall's answer :  
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
 isinstance is also intuitive but there is the complication that it requires the line  
 NoneType = type(None) 
 which isn't needed for types like int and float .  
上一篇: 从mongo数组中删除null元素
