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异常处理慎用“except:pass”建议
Apr 02 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python之日期与时间处理模块(date和datetime)
Feb 16 Python
详解 Python 与文件对象共事的实例
Sep 11 Python
python基于ID3思想的决策树
Jan 03 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
python+splinter自动刷新抢票功能
Sep 25 Python
Python 项目转化为so文件实例
Dec 23 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
python 离散点图画法的实现
Apr 01 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 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
当海贼王变成JOJO风
2020/03/02 日漫
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
关于svn冲突的解决方法
2013/06/21 PHP
php删除指定目录的方法
2015/04/03 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
pygame实现飞机大战
2020/03/11 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Java集成swagger文档组件
2021/06/28 Java/Android