Python解惑之True和False详解
学python需要什么前⾔
众所周知在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 赋新的值,否则程序代码逻辑都会乱套了。这也算是Python2.x 中⼀个坑,不过在Python3.x 中,终于把这个两变量变成了关键字,也就是说,程序员再也没
法给这两变量赋新的值了,从此True永远指向真对象,False指向假对象,永不分离。⽤keyword模块检测True 和False 是否为关键字。
>>> import keyword
>>> keyword.iskeyword('True')
False
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者使⽤python能带来⼀定的帮助,如果有疑问⼤家可以留⾔
交流,谢谢⼤家对的⽀持。