While 1 比 While True 快?


While 1 比 While True 快?_第1张图片
junjind

>1.在Python中bool是int的子类(不管是在Python 2中还是在Python 3中)


>2.在Python 2.7中True和False还不是关键词,但在Python 3 中是


Python 2.7



While 1 比 While True 快?_第2张图片
Python 3

>3.Python 2中True和False还不是关键词,因此我们可以对它进行赋值



Python 2
While 1 比 While True 快?_第3张图片
Python 3

>4.由于bool是int的子类,为了保持向下兼容性,在算术运算中,True和False会被当做int值来进行


While 1 比 While True 快?_第4张图片

>5.代码验证

While 1 比 While True 快?_第5张图片
Python 2
运行时间对比

why?

      其实这就是前提中关键词的问题,由于Python 2中True和False还不是关键词,因此我们可以对其进行任意赋值,这导致程序在每次循环时都需要对True和False的值进行检查,而对于1则程序进行了优化而后不会再进行检查。

       我们可以通过dis来查看while one 和while true的字节码。


While 1 比 While True 快?_第6张图片
Python 2


While 1 比 While True 快?_第7张图片
验证结果

可以看出,正如上面讲的,在while True的时候,字节码中多出了几行语句,正是这几行语句进行了True值的检查.

而在python 3中,由于True和False已经是关键词了,不允许进行重新赋值,因此,其执行结果与while 1 不再有区别



While 1 比 While True 快?_第8张图片
python 3



你可能感兴趣的:(While 1 比 While True 快?)