Python 为什么这个lambda函数总是在类型匹配时返回False?
鉴于:Python 为什么这个lambda函数总是在类型匹配时返回False?,python,python-3.x,nonetype,Python,Python 3.x,Nonetype,鉴于: 您正在检查对象的类型是否为None,而不是实际对象本身类型返回一个类型对象,即该对象的实际类型/类别。在None的特定情况下,它返回NoneType: g = lambda x: type(x) is None 由于对象有一个类型,type(x)为None将永远不会计算为True 为什么不直接测试对象呢?此外,如果要命名一个lambda,还可以定义自己的函数 >>> type(None) NoneType 或者,您可以使用isinstance检查- >>
您正在检查对象的类型是否为
None
,而不是实际对象本身<代码>类型返回一个类型
对象,即该对象的实际类型/类别。在None
的特定情况下,它返回NoneType
:
g = lambda x: type(x) is None
由于对象有一个类型,type(x)为None
将永远不会计算为True
为什么不直接测试对象呢?此外,如果要命名一个lambda
,还可以定义自己的函数
>>> type(None)
NoneType
或者,您可以使用isinstance
检查-
>>> def check(x):
... return x is None
...
>>> check(None)
True
作为旁注,pandas库中的函数直接提供此功能。
>>type(None)为None
计算结果为False
。因为
与None
不是同一个对象<代码>类型(无)为
。但是你也可以使用x is None
。我受到了这篇文章的影响:
>>> def check(x):
... return x is None
...
>>> check(None)
True
>>> isinstance(None, type(None))
True