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

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类实例和任何对象用`==`比较都会返回Truereturn 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.lryc.cn/news/64003.html

相关文章:

  • Spring Bean定义有哪些方式?
  • JVM内存模型的演变
  • DataX3同步Mysql数据库数据到Mysql数据库和DataX3同步mysql数据库数据到Starrocks数据库
  • 你是否曾经为自己写的代码而感到懊恼?那如何才能写出高质量代码呢?
  • 常用 Composition API【VUE3】
  • --商业模式--
  • JavaWeb《HTML基础标签》
  • ChatGpt 能取代人类吗?
  • PHP内存溢出Allowed memory size of 解决办法
  • 重回代码,学习总结
  • 【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
  • 算法记录 | 48 动态规划
  • CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常
  • 麓言信息设计创意思维,打开设计师思路
  • POJ3704 括号匹配问题 递归方法
  • leetcode — JavaScript专题(三):完全相等的 JSON 字符串、复合函数、 分组、柯里化、将对象转换为 JSON 字符串
  • OGNL 的表达式
  • JAVA面试中遇到的那些坑,80%的人都种过招
  • 【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)
  • linux中一条命令查询当前端口的进程,然后拿到进程pid,作为另一条杀死进程的参数
  • 程序员找工作难吗?我用亲身经历来告诉大家
  • 【Web服务】HTTP和DNS重要知识
  • 【C++】-关于类和对象的默认成员函数(中)-拷贝构造函数和赋值运算符重载函数
  • c++11上篇
  • 异构无线传感器网络路由算法研究(Matlab代码实现)
  • MySQL数据库——MySQL TRUNCATE:清空表记录
  • 财报解读:连续三年逆势增长的背后,欧派家居到底靠的是什么?
  • 希望计算机专业同学都知道这些宝藏博主
  • 1694_week1_MIT使用Python编程学习手记1
  • 第二十一章 光源