在 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
最佳答案
你可以试试:
>>> variable = None
>>> isinstance(variable,type(None))
True
>>> variable = True
>>> isinstance(variable,type(None))
False
isinstance接受 2 个参数 isinstance(object, classinfo)
在这里,通过传递 None
您将 classinfo
设置为 None,因此会出现错误。您需要传入类型。
关于python - 无 Python 错误/错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17198466/