假设:
type(m[11].value)
<class 'NoneType'>
type(m[12].value)
<class 'str'>
为什么以下lambda函数在我传递上述两个变量时总是返回false?
g = lambda x: type(x) is None
答案 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
函数直接提供此功能。