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连接mysql并提交mysql事务示例
Mar 05 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
python语言元素知识点详解
May 15 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
python实现批量文件重命名
Oct 31 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 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
PHP判断指定时间段的2个方法
2014/03/14 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python微信公众号开发简单流程
2018/03/23 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
安全标准化实施方案
2014/02/20 职场文书
爽歪歪广告词
2014/03/20 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
农村文化建设标语
2014/10/07 职场文书
python flask框架快速入门
2021/05/14 Python
python 制作一个gui界面的翻译工具
2021/05/14 Python
vue实现移动端div拖动效果
2022/03/03 Vue.js
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android