我有一个有时会返回NoneType值的方法.那么如何质疑一个NoneType变量呢?例如,我需要使用if方法
if not new:
new = '#'
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的方式,我希望你明白我的意思.
the*_*eye 545
那么如何质疑一个NoneType变量呢?
is
像这样使用运算符
if variable is None:
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
由于None
是NoneType
Python中唯一的单例对象,我们可以使用is
运算符来检查变量是否包含None
在其中.
引用is
文档,
对象标识的运算符
is
和is not
测试:x is y
当且仅当x
和y
是同一个对象时才是真的.x is not y
产生反向真值.
由于只能有一个实例None
,is
因此是首选检查方式None
.
从马的嘴里听到它
引用Python的编码风格指南 - PEP-008(由Guido自己共同定义),
比较像单身人士
None
应始终做到is
或者is not
,从来没有平等的运营商.
elh*_*ine 61
if variable is None:
...
Run Code Online (Sandbox Code Playgroud)
if variable is not None:
...
Run Code Online (Sandbox Code Playgroud)
car*_*mom 19
isinstance
根据Alex Hall的回答,它也可以完成:
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
Run Code Online (Sandbox Code Playgroud)
isinstance
也是直观的,但它需要线路的复杂性
NoneType = type(None)
对于像int
和的类型不需要float
.
Mar*_*sli 14
正如Aaron Hill的命令所指出的那样:
因为你不能进行子类化
NoneType
,因为它None
是一个单例,isinstance
不应该被用来检测None
- 相反,你应该按照接受的答案说,并使用is None
或is not None
.
原答案:
然而,最简单的方法是,除了小豆蔻的答案之外没有额外的线路可能是:
isinstance(x, type(None))
那么如何质疑一个NoneType变量呢?我需要使用if方法
使用isinstance()
不需要is
在if
-statement中:
if isinstance(x, type(None)):
#do stuff
Run Code Online (Sandbox Code Playgroud)
附加信息
您还可以isinstance()
在文档中提到的一个语句中检查多种类型.只需将类型写为元组即可.
isinstance(x, (type(None), bytes))
Run Code Online (Sandbox Code Playgroud)
小智 7
不确定这是否回答了问题。但我知道这花了我一段时间才弄明白。我正在浏览一个网站,突然之间作者的名字不再存在了。所以需要一个检查语句。
if type(author) == type(None):
print("my if body")
else:
print(" my else body")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,作者可以是任何变量,也None
可以是您要检查的任何类型。