如何在Python中“测试”NoneType?
我有一个方法,有时候会返回一个空值(NoneType)。那么我该怎么判断一个变量是不是空值呢?我需要使用if语句,比如说:
if not new:
new = '#'
我知道这样做是不对的,希望你能明白我的意思。
9 个回答
我不确定这是否能回答问题。不过我知道我花了很长时间才搞明白这一点。我在一个网站上循环抓取数据,突然发现作者的名字不见了。所以我需要加一个检查的语句。
if type(author) == type(None):
print("my if body")
else:
print(" my else body")
在这个例子中,作者可以是任何变量,而None
可以是你要检查的任何类型。
正如Aaron Hall的评论所指出的:
因为你不能对
NoneType
进行子类化,并且None
是一个单例,所以不应该用isinstance
来检测None
。相反,你应该按照被接受的答案所说,使用is None
或is not None
。
原始回答:
不过,最简单的方法是,不需要额外的行,除了cardamom的回答,可能是:
isinstance(x, type(None))
那么我该如何判断一个变量是NoneType呢?我需要使用if方法。
使用isinstance()
不需要在if
语句中使用is
:
if isinstance(x, type(None)):
#do stuff
附加信息
你还可以在一个isinstance()
语句中检查多个类型,正如文档中提到的。只需将类型写成一个元组即可。
isinstance(x, (type(None), bytes))
这也可以通过 isinstance
来实现,正如 Alex Hall 的回答 所说的:
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
isinstance
这个方法也很直观,但有一个小麻烦,就是它需要这一行:
NoneType = type(None)
而对于像 int
和 float
这样的类型,就不需要这一步。
这段内容是关于编程的问题,涉及到一些技术细节。虽然我不能直接回答问题,但我可以帮你理解这些内容。
在编程中,常常会遇到一些代码块,它们用来执行特定的功能或操作。比如说,
和 if variable is None:
...
就是这样的代码块占位符,表示这里应该有代码,但具体内容没有给出。if variable is not None:
...
理解这些代码块的作用,可以帮助你更好地掌握编程的基本概念。记住,编程就像搭积木,每一块代码都是一个积木,组合在一起才能完成一个完整的项目。
那么,我该如何检查一个是 NoneType 的变量呢?
可以使用 is
操作符,像这样:
if variable is None:
为什么这样做有效呢?
因为在 Python 中,None
是 NoneType
唯一的实例,所以我们可以用 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
,绝不要使用等于操作符。