Python解惑:True与False

简介: Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用True和False表示。在if 条件判断和while 语句中经常用到,不过在Python2.x 中,True 和False 却有着奇怪的用法,就是真假可以相互被替换,

Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分别用TrueFalse表示。在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 中,TrueFalse是两个内建(built-in)变量,内建变量和普通自定义的变量如a, b, c一样可以被重新赋值,因此我们可以把这两个变量进行任意的赋值,比如:  

True = 2
False = "abc"

甚至是True和False进行互换

tmp = True
True = False
False = tmp

互换后变量True指向了对象,False指向了对象:

false-true.png

因此,在Python 中我们不要随意给True 和False 赋新的值,否则程序代码逻辑都会乱套了。这也算是Python2.x 中一个坑,不过在Python3.x 中,终于把这个两变量变成了关键字,也就是说,程序员再也没法给这两变量赋新的值了,从此True永远指向对象,False指向对象,永不分离。用keyword模块检测True 和False 是否为关键字。

>>> import keyword
>>> keyword.iskeyword('True')
False


目录
相关文章
|
Python
python while true的语法和用法
python while循环语句的一般形式是while后面跟一个条件表达式,当该表达式的返回值为True,或经过布尔转换会返回True,比如1转换为bool布尔类型会为True,那么就执行一次while的循环。while True,即直接把表达式设置为True,那么无论如何,代码都将进行一次while的循环,直到遇到退出的条件,
818 4
|
Python
python while true用法
python while循环语句的一般形式是while后面跟一个条件表达式,当该表达式的返回值为True,或经过布尔转换会返回True,比如1转换为bool布尔类型会为True,那么就执行一次while的循环。while True,即直接把表达式设置为True,那么无论如何,代码都将进行一次while的循环,直到遇到退出的条件,而且如果没有退出循环的条件,那么将无限循环下去。
788 1
Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)
Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
321 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
349 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
279 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
208 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
237 3

推荐镜像

更多