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 相关文章推荐
Django自定义分页与bootstrap分页结合
Feb 22 Python
《与孩子一起学编程》python自测题
May 27 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
pycharm重置设置,恢复默认设置的方法
Oct 22 Python
详解Python传入参数的几种方法
May 16 Python
对Python函数设计规范详解
Jul 19 Python
下载官网python并安装的步骤详解
Oct 12 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Virtualenv 搭建 Py项目运行环境的教程详解
Jun 22 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
python中的random模块和相关函数详解
Apr 22 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
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php查询内存信息操作示例
2019/05/09 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript 常用代码技巧大收集
2009/02/25 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
学生党员思想汇报范文
2014/01/09 职场文书
工作时间上网检讨书
2014/02/03 职场文书
个人租房协议书
2014/11/28 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
结婚典礼致辞
2015/07/28 职场文书
《青山不老》教学反思
2016/02/22 职场文书
《西门豹》教学反思
2016/02/23 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python