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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
python循环监控远程端口的方法
Mar 14 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
Python求出0~100以内的所有素数
Jan 23 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
Python jieba库用法及实例解析
Nov 04 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
Python 中的Sympy详细使用
Aug 07 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 cookie名使用点号(句号)会被转换
2014/10/23 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
使用python绘制人人网好友关系图示例
2014/04/01 Python
python网络编程示例(客户端与服务端)
2014/04/24 Python
用python处理MS Word的实例讲解
2018/05/08 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
模具专业毕业推荐信
2014/03/08 职场文书
读书演讲主持词
2014/03/18 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python