我有一个方法,有时返回一个NoneType值。因此,我如何质疑一个变量是一个NoneType?例如,我需要使用if方法
if not new:
new = '#'
我知道这是错误的方式,我希望你能理解我的意思。
我有一个方法,有时返回一个NoneType值。因此,我如何质疑一个变量是一个NoneType?例如,我需要使用if方法
if not new:
new = '#'
我知道这是错误的方式,我希望你能理解我的意思。
当前回答
if variable is None:
...
if variable is not None:
...
其他回答
因此,我如何质疑一个变量是一个NoneType?
像这样使用is运算符
if variable is None:
为什么会这样?
由于None是Python中唯一的NoneType单例对象,我们可以使用is操作符来检查变量中是否有None。
引用is docs,
操作符is和is not测试对象同一性:当且仅当x和y是同一个对象时,x is y为真。X不是y会得到逆真值。
因为只能有一个None实例,所以是检查None的首选方法。
听可靠消息
引用Python的编码风格指南- PEP-008(由Guido自己共同定义),
与None这样的单例对象的比较总是应该使用is或is not,而不是相等操作符。
if variable is None:
...
if variable is not None:
...
我主要使用以下方法来检查NoneType。
if (new): # not None
...
else: # NoneType
...
根据Alex Hall的回答,也可以用isinstance来实现:
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
Isinstance也是直观的,但有一个复杂的问题,它需要行
NoneType =类型(无)
这对于int和float类型不需要。
Python 2.7:
x = None
isinstance(x, type(None))
or
isinstance(None, type(None))
= = >真