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中的localtime()方法使用详解
May 22 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
Python3实现转换Image图片格式
Jun 21 Python
python找出完数的方法
Nov 12 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 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
基础的WordPress插件制作教程
2015/11/24 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
javascript控制台详解
2015/06/25 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
python 快速排序代码
2009/11/23 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python递归法解决棋盘分割问题
2019/07/17 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
挑战杯创业计划书的写作指南
2014/01/07 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
考勤制度通知
2015/04/25 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫