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元素
