You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何该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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:35:01