为什么即使类型匹配,这个lambda函数总是返回False?

时间:2018-03-26 07:14:39

标签: python python-3.x nonetype

假设:

type(m[11].value)
<class 'NoneType'>

type(m[12].value)
<class 'str'>

为什么以下lambda函数在我传递上述两个变量时总是返回false?

g = lambda x: type(x) is None

1 个答案:

答案 0 :(得分:3)

您正在检查对象的类型是否为None,而不是实际对象本身。 type返回一个type对象,该对象的实际类型/类。在None的特定情况下,它会返回NoneType

>>> type(None)
NoneType

由于对象具有类型,type(x) is None永远不会评估为True

为什么不直接测试对象?此外,如果您要命名lambda,您也可以定义自己的功能。

>>> def check(x):
...     return x is None
... 
>>> check(None)
True  

或者,您可以使用isinstance支票 -

>>> isinstance(None, type(None))
True

作为旁注,pandas库中的pd.isnull函数直接提供此功能。