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按行读取文件的简单实现方法
Jun 22 Python
python中range()与xrange()用法分析
Sep 21 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
python实现图片转字符小工具
Apr 30 Python
python中数据库like模糊查询方式
Mar 02 Python
python单元测试框架pytest的使用示例
Oct 07 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
js实现进度条的方法
2015/02/13 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
工业自动化专业毕业生推荐信
2013/11/18 职场文书
四年级语文教学反思
2014/02/05 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
经典商业广告词
2014/03/13 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
司法建议书范文
2014/05/13 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
社会实践活动总结
2015/02/05 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
php解析非标准json、非规范json的方式实例
2022/05/10 PHP