Python读取MySQL资料库bool值後,判断式的有趣问题

近期遇到一个 Python 的有趣现象,不知道放在哪好,就写在这里吧。
话说一般小弟在写 Python 的判断式时,常会把『==』跟『is』混用。
例如:
设定 aa = True
这时判断式『aa == True』跟『aa is True』,两者得到的答案都是相同的『True』。
有趣的是,近期小弟写一个程序从 MySQL 资料库读取 bool 值
明明应该为 True 呀,但用 is True 却得到『False』,搞得最终结果与预想值天差地远。这倒底是哪里出了问题呢?
经测试发现:
从 MySQL 资料库读取 bool 值,不论是 True 或 False,判断式用 is 结果都是 False。
要使用『==』符号做判断,才会得到正确的结果。
会有这种现象的原因是
MySQL 读取 bool 值时,用 1 表示 True、0 表示 False,并没有独立的 True 或 False 值。
而 Python 除了有 True、False 之外。
在使用 == 符号做判断时,也会把 0 当成 False、把 1 当成 True。
但当使用 is 做判断时,1 就是 1、True 就是 True,两个就迳渭分明、决不混淆了。
结论:
Python 从 MySQL 资料库读取 bool 值,要写成判断式时
应该使用 == 或 != 符号做判断,不可以用 is 做判断。
https://ithelp.ithome.com.tw/upload/images/20220310/20106701lGwUFf3E6T.jpg


<<:  .NET Framework4.7.2 制作 Web API 使用 [NSwag] 套件呈现 Swagger UI + JWT Authentication 及跨域处理(CORS)

>>:  Vue 2.X+ Router + Cli + VueX ( 六角课程笔记 )

【在厨房想30天的演算法】Day 21 演算法 : 最短路径 Shortest Path Dijkstra 演算法

Aloha!嗨~我是少女人妻 Uerica ! 最近因为常常查演算法跟资料结构的文章,文章推荐跟...

Day15 Open-Match 监控安装

Open-Match 的基础建构采用了 OpenCensus 所提供的 library,因此可暴露 ...

表单攻略前准备

这需要一个完整的例子。 我先依照先前讲的把程序码先准备好 先看画面 准备了两个页面: User, U...

敏捷开发 组别

敏捷开发 https://wolkesau.medium.com/敏捷开发-1afc1cd6edf ...

[Angular] Day14. Built-in directives - structural

在上一章中介绍了 attribute directive 的用法,接着要来介绍另一种 Angular...