Python解惑之True和False详解


Posted in Python onApril 24, 2017

前言

众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,True 和False 却有着奇怪的用法,就是真假可以相互被替换

先看下面代码:

>>> True
True
>>> False
False
>>> if True:
...  print True
... 
True
>>> if not False:
...  print False
... 
False

这段代码逻辑理解起来没任何问题,if 判断中只要表达式的值返回 True,就执行if 代码块中的语句。再来看下一段代码:

>>> True, False = False, True
>>> True
False
>>> False
True

>>> if not True:
...  print False
... 
True
>>> if False:
...  print True
... 
False
>>>

我把True 和False 互换了一下,就是传说中的颠倒是非黑白。真变成了假,假变成了真。于是在条件判断中,表达式的值返回False才执行代码块中的语句。究竟是什么原因呢?

解惑

在Python2.7 中,True和False是两个内建(built-in)变量,内建变量和普通自定义的变量如a, b, c一样可以被重新赋值,因此我们可以把这两个变量进行任意的赋值,比如:

True = 2
False = "abc"

甚至是True和False进行互换

tmp = True
True = False
False = tmp

互换后变量True指向了假对象,False指向了真对象:

 Python解惑之True和False详解

因此,在Python 中我们不要随意给True 和False 赋新的值,否则程序代码逻辑都会乱套了。这也算是Python2.x 中一个坑,不过在Python3.x 中,终于把这个两变量变成了关键字,也就是说,程序员再也没法给这两变量赋新的值了,从此True永远指向真对象,False指向假对象,永不分离。用keyword模块检测True 和False 是否为关键字。

>>> import keyword
>>> keyword.iskeyword('True')
False

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python日志模块logging简介
Apr 13 Python
Python学习思维导图(必看篇)
Jun 26 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
python基于递归解决背包问题详解
Jul 03 Python
使用Python制作表情包实现换脸功能
Jul 19 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
Python anaconda安装库命令详解
Oct 16 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 Python
Python新手入门最容易犯的错误总结
Apr 24 #Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 #Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 #Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 #Python
批量获取及验证HTTP代理的Python脚本
Apr 23 #Python
深入理解python中的select模块
Apr 23 #Python
Python3如何解决字符编码问题详解
Apr 23 #Python
You might like
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
Yii清理缓存的方法
2016/01/06 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
AngularJS内置指令
2015/02/04 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Django对数据库进行添加与更新的例子
2019/07/12 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
幼儿教育感言
2014/02/05 职场文书
就业协议书的作用
2014/04/11 职场文书
幼儿园安全责任书
2014/04/14 职场文书
驻村工作先进事迹
2014/08/14 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技