2016-03-05 2 views
0

Я только начал изучать Python, так что это может показаться глупый вопрос, но я действительно хочу знать, что может быть реальная возможность не использовать while true для интерпретатора, который Execute скомпилированный код с помощью ceval.c вместо for (;;)here в том же коде.Почему бесконечно для цикла не в то время как True в Python Interpreter OPCODE?

Я знаю, что переводчик должен идти в бесконечном цикле, пока что-то не возвращается, следовательно, бесконечный цикл был написано как этого

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

Но идя питон собственного принцип читаемость считает не while true бы был лучшим вариантом?

Или это будет иметь любую разницу в производительности?

+1

C не имеют «истинный»; это будет 'while (1)'. Назад в дни 'for (;;)' могло быть быстрее и застряло. [Родственные] (http://stackoverflow.com/questions/885908/while-1-vs-for-is-there-a-speed-difference) –

+0

@AnttiHaapala [while (1) Vs. for (;;) Есть ли разница в скорости?] (http://stackoverflow.com/a/887298/4532996), казалось бы, сказать ... нет, нет – cat

ответ

1
for (;;) { 

- классический способ сделать цикл C навсегда, возникший с 1970-х годов. Я считаю, что это даже в оригинальной книге Кернигана и Ричи. Это идиоматика и привычка, нет причин для повышения производительности.

Но довольно странно большинство Программисты с того времени написал бы

if (!inst1) { 

вместо

if (inst1 == 0) { 

, что делает этот код немного непоследовательно stylewise ...

Смежные вопросы