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程序设计入门(2)变量类型简介
Jun 16 Python
详解Python中for循环的使用
Apr 14 Python
Django框架中方法的访问和查找
Jul 15 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
神经网络python源码分享
Dec 15 Python
python编写微信远程控制电脑的程序
Jan 05 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
详解python中eval函数的作用
Oct 22 Python
python+opencv边缘提取与各函数参数解析
Mar 09 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/12/09 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python while 循环使用的简单实例
2016/06/08 Python
Python 转义字符详细介绍
2017/03/21 Python
python 中split 和 strip的实例详解
2017/07/12 Python
Python线性回归实战分析
2018/02/01 Python
彻底解决Python包下载慢问题
2020/11/15 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
实习自我鉴定模板
2013/09/28 职场文书
毕业自我鉴定范文
2013/11/06 职场文书
班主任工作年限证明
2014/01/12 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
法人授权委托书范本
2014/04/04 职场文书
2014年团队工作总结
2014/11/24 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
Java中try catch处理异常示例
2021/12/06 Java/Android
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers