为什么无限循环而不是在Python解释器OPCODE中为True?

时间:2016-03-05 19:24:30

标签: python cpython

我刚刚开始学习python,所以这看起来似乎是一个愚蠢的问题,但我真的想知道什么才是真正的可能性,不使用while true的python解释器执行编译代码的帮助<{3}}代替for (;;) ceval.c在同一代码中。

我知道解释器必须进入无限循环,直到返回一些东西,因此无限循环被写成这样的

 for (;;) {
#ifdef WITH_TSC
        if (inst1 == 0) {  

但是通过python自己的原则可读性计数赢得while true本来是更好的选择?

或者这会有任何性能差异吗?

1 个答案:

答案 0 :(得分:1)

for (;;) {

是制作C永远循环的经典方法,源于1970年代。我相信它甚至在最初的Kernighan和Ritchie书中也是如此。它是惯用语和习惯,没有表现理由。

但是很奇怪,那个时候大多数C程序员都会编写

if (!inst1) {

而不是

if (inst1 == 0) {

这使得这个代码在样式方面有点不一致......