为何该Lambda函数传入匹配类型变量时仍始终返回False?
为啥你的Lambda函数总是返回False?
嘿,这个问题我之前也踩过坑!让我给你掰扯清楚到底咋回事~
首先得搞懂Python里None的本质:None是**NoneType类型的唯一实例**。也就是说,type(None)返回的是<class 'NoneType'>这个类对象,而不是None本身。
再看你的Lambda函数:
g = lambda x: type(x) is None
这里你是在判断「x的类型对象」是不是等于「None这个实例」——这完全是两个不同的东西啊!哪怕x确实是None(也就是type(x)是NoneType),拿NoneType类和None实例比,结果肯定是False。
正确的写法有两种:
最推荐的方式:直接判断x是不是None实例
因为None是单例,用is判断最准确高效:g = lambda x: x is None当x是
None时,这个函数会返回True;x是字符串时返回False,完全符合你的需求。如果一定要用type判断
那得比较x的类型和None的类型是否一致:g = lambda x: type(x) is type(None)这样当x是
None时,type(x)和type(None)都是NoneType,结果就会是True了。
举个实际测试的例子:
# 测试x是None的情况 x = None print(type(x)) # 输出 <class 'NoneType'> print(type(x) is None) # 输出 False print(x is None) # 输出 True print(type(x) is type(None)) # 输出 True
内容的提问来源于stack exchange,提问作者leeand00
相关产品推荐
相关产品推荐

