在 Python 中,你有None
单例,在某些情况下它的行为非常奇怪:
>>> a = None
>>> type(a)
<type 'NoneType'>
>>> isinstance(a,None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
所以首先,<type 'NoneType'>
显示None
不是类型,但NoneType
就是这样。然而,当您运行时isinstance(a,NoneType)
,它会响应错误:NameError: name 'NoneType' is not defined
现在,鉴于此,如果您有一个输入默认设置为 的函数None
,并且需要检查,您将执行以下操作:
if variable is None:
#do something
else:
#do something
我不能执行以下操作的原因是什么:
if isinstance(variable,None): #or NoneType
#do something
else:
#do something
我只是在寻找详细的解释,以便更好地理解这一点
编辑:好的应用程序
假设我想使用,以便在有多种类型时isinstance
可以做某事,包括:variable
None
if isinstance(variable,(None,str,float)):
#do something