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中文件操作简明介绍
Apr 13 Python
python将字符串转换成数组的方法
Apr 29 Python
python发送HTTP请求的方法小结
Jul 08 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python3.6实现学生信息管理系统
Feb 21 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
python实点云分割k-means(sklearn)详解
May 28 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
Python学习之异常中的finally使用详解
Mar 16 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP 无限级分类
2017/05/04 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
Vue监听数组变化源码解析
2017/03/09 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
PyQt5每天必学之工具提示功能
2018/04/19 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
高中军训感言400字
2014/02/24 职场文书
争先创优心得体会
2014/09/12 职场文书
2015年三万活动总结
2015/03/25 职场文书
python如何正确使用yield
2021/05/21 Python
Redis集群的关闭与重启操作
2021/07/07 Redis