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 28 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Python实现进程同步和通信的方法
Jan 02 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
python实现桌面托盘气泡提示
Jul 29 Python
Python3 Tkinkter + SQLite实现登录和注册界面
Nov 19 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
8种常用的Python工具
Aug 05 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
Python 实现链表实例代码
2017/04/07 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
python复合条件下的字典排序
2020/12/18 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
护士思想汇报
2014/01/12 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
领导干部保密承诺书
2014/08/30 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
Django REST framework 限流功能的使用
2021/06/24 Python