当前位置: 首页 > article >正文

Python中True、False、None的判断(避坑)

2.4 Python中True、False、None的判断

在Python中,所有的空值和0在作为条件表达式时,隐式的进行bool转换后都是False,比如:空列表:[]、空字符串:‘’、空字典:{}等等。

from icecream import ic
a = ''
b = 0
c = []
d = {}
e = set()
f = None
ic(not a, not b, not c)
ic(not d, not e, not f)

ic| not a: True, not b: True, not c: True
ic| not d: True, not e: True, not f: True

None是一个特殊的常量,表示空。有着自己的类型:NoneType。空和空值不相等。

from icecream import ic
a = ''
b = []
ic(a is None, a == None)
ic(b is None, b == None)

ic| a is None: False, a == None: False
ic| b is None: False, b == None: False

None是一个单例对象,所有的None都指向同一个id,我们在Python中判断某个对象是否是None的时候,最好是使用is。因为==是调用对象的魔法方法__eq__(),而这个魔法方法是可以重载的。这就有可能会导致判断出问题:

from icecream import ic
class Mc:
    def __eq__(self, other):  # Mc类实例和任何对象用`==`比较都会返回True
        return True
mc = Mc()
ic(mc is None, mc == None)
ic(mc == True, mc == False)

ic| mc is None: False, mc == None: True
ic| mc == True: True, mc == False: True

同理,所有的True和False都指向同一个id,在判断Ture和False是最好也使用is


http://www.kler.cn/a/16159.html

相关文章:

  • 【Linux】Linux 权限的理解
  • 122、java的LambdaQueryWapper的条件拼接实现数据sql中and (column1 =1 or column1 is null)
  • AutoHotKey自动热键AHK-正则表达式
  • C#中 layout的用法
  • 微信小程序——01开发前的准备和开发工具
  • 【CSS】什么是BFC?
  • Http1.0 、1.1、2.0、3.0的区别
  • 《企业级Linux高可用负载均衡集群实践真传》目录
  • LeetCode:面试题 02.07. 链表相交
  • 数据结构基础day9
  • 书接上回,接着研究当今世上缓存第一人
  • pnpm 实现 Monorepo 一些操作命令
  • Java 异常处理、日志
  • Linux od命令
  • ESP32-CAM:TinyML 图像分类——水果与蔬菜
  • 【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】
  • 浅谈Kubernetes集群外部通信—Ingress方式
  • 【Java笔试强训 2】
  • Python 练习实例希望这些例子可以帮助您
  • 网络编程 总结二
  • sql注入(三)绕过方法及防御手段
  • 【软件测试】自动化测试日志问题该怎么解决?测试老鸟总结方案...
  • javascript 设计模式
  • java版本企业电子招投标采购系统之项目说明和开发类型源码
  • 【KVM虚拟化】· 命令行KVM安装linux
  • PostgreSQL14.6主从模式配置