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解析nginx日志文件
May 11 Python
总结Python编程中函数的使用要点
Mar 20 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
实现Python与STM32通信方式
Dec 18 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
Python操作Excel把数据分给sheet
May 20 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 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实现encode64编码类实例
2015/03/24 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
关于python字符串方法分类详解
2019/08/20 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
中学家长会邀请函
2014/01/17 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
法语专业求职信
2014/07/20 职场文书
毕业设计工作总结
2015/08/14 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
Redis可视化客户端小结
2021/06/10 Redis