题图:Patrick Fore

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 python的true false语句_python的=true

True永远指向 对象, False指向 对象,永不分离。用 keyword模块检测True 和False 是否为关键字。

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