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实现得到一个给定类的虚函数
Sep 28 Python
Python中的filter()函数的用法
Apr 27 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
详解python的几种标准输出重定向方式
Aug 15 Python
利用Python爬取可用的代理IP
Aug 18 Python
浅谈django中的认证与登录
Oct 31 Python
python实现黑客字幕雨效果
Jun 21 Python
python实现决策树分类(2)
Aug 30 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
利用PyQt中的QThread类实现多线程
Feb 18 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 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
短波的认识
2021/03/01 无线电
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php中使用url传递数组的方法
2015/02/11 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python之import机制详解
2014/07/03 Python
python多进程操作实例
2014/11/21 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python 实现list或string按指定分段
2019/12/25 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
车贷收入证明范本
2014/01/09 职场文书
清扬洗发水广告词
2014/03/14 职场文书
社区护士演讲稿
2014/08/27 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
拾金不昧表扬信
2015/01/16 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android