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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
深入理解Python 代码优化详解
Oct 27 Python
python对象及面向对象技术详解
Jul 19 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python装饰器用法实例总结
May 26 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
python实现简单颜色识别程序
Feb 19 Python
python redis存入字典序列化存储教程
Jul 16 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python中的 enumerate和zip详情
May 30 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
2006/10/09 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
使用Python写个小监控
2016/01/27 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Django 再谈一谈json序列化
2020/03/16 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
2014年两会学习心得体会
2014/03/10 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
2014离婚协议书范文
2014/09/10 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python