Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Python解惑:True与False

$
0
0

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 = True 互换后变量 True 指向了 假 对象, False 指向了 真 对象:
Python解惑:True与False

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

>>> import keyword >>> keyword.iskeyword('True') False 扫一扫关注公众号获取最新文章:
Python解惑:True与False

Viewing all articles
Browse latest Browse all 9596

Trending Articles