Python中如何判断数组对象整体是否等于None?
判断Python对象是否为None的正确方式
这个问题我之前也踩过坑!当你用== None去判断的时候,如果对象是数组(比如numpy数组这类容器),Python会调用它的__eq__方法做元素级的比较,返回的是一个布尔数组,而不是你想要的“整个对象是不是None”的单个布尔值,这就会导致后续的if判断出问题。
正确的做法:用is None
直接用is关键字来判断对象身份就对了,代码改成这样:
arr = None # 或者是一个数组 if arr is None: # 执行操作
为啥is比==靠谱?
- 在Python里,
None是个单例对象——整个程序里所有的None都指向同一个内存地址。is判断的就是两个对象是否是同一个(内存地址相同),所以用is None能准确判断这个对象是不是就是None本身。 - 而
==是判断“值是否相等”,对于数组这类容器,它会逐个元素去比较和None是否相等,完全不是你要的“整体判断”逻辑。
额外小提示
如果要判断对象不是None,记得用is not None,别用!= None,避免踩同样的坑~
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

