>1.在Python中bool是int的子类(不管是在Python 2中还是在Python 3中)
>2.在Python 2.7中True和False还不是关键词,但在Python 3 中是
Python 2.7 Python 3>3.Python 2中True和False还不是关键词,因此我们可以对它进行赋值
Python 2 Python 3>4.由于bool是int的子类,为了保持向下兼容性,在算术运算中,True和False会被当做int值来进行
>5.代码验证
Python 2 运行时间对比why?
其实这就是前提中关键词的问题,由于Python 2中True和False还不是关键词,因此我们可以对其进行任意赋值,这导致程序在每次循环时都需要对True和False的值进行检查,而对于1则程序进行了优化而后不会再进行检查。
我们可以通过dis来查看while one 和while true的字节码。
Python 2 验证结果可以看出,正如上面讲的,在while True的时候,字节码中多出了几行语句,正是这几行语句进行了True值的检查.
而在python 3中,由于True和False已经是关键词了,不允许进行重新赋值,因此,其执行结果与while 1 不再有区别
python 3
网友评论