2016-05-17 2 views
7

Почему у Python нет цикла «делать пока», как и многие другие языки программирования, такие как C?Python: Почему нет цикла while в python

Пример: В C мы делаем во время цикла, как показано ниже: не

do { 
    statement(s); 
} while(condition); 
+3

Статус * Отклонено *: https://www.python.org/dev/peps/pep-0315/ –

+2

Возможный дубликат [Эмуляция сделай, а цикл в Python?] (HTTP: // StackOverflow. com/questions/743164/emulate-a-do-while-loop-in-python) – miradulo

+0

Повторное уведомление: ссылка, предоставленная Martijn, не выглядит очень основанной на мнениях: «Последующие усилия по возрождению ОПТОСОЗ в апреле 2009 года не встречаются с успехом, потому что не возникло синтаксиса, который мог бы состязаться ... » –

ответ

15

Существует нет do...while цикла, потому что нет хороший способ определить, что соответствует в схеме statement: indented block используется любой другой Составной оператор Python. Поскольку такие предложения для добавления такого синтаксиса никогда не достигали согласия.

Не является ли на самом деле необходимость иметь такую ​​конструкцию, не тогда, когда вы можете просто сделать:

while True: 
    # statement(s) 
    if not condition: 
     break 

и имеют тот же эффект, как C do { .. } while condition цикла.

См PEP 315 -- Enhanced While Loop:

Отклонено [...] потому что синтаксис не возникло, что может конкурировать с следующей форме:

while True: 
     <setup code> 
     if not <condition>: 
      break 
     <loop body> 

Синтаксис альтернативы предложенному в PEP был найдена для базовой петли, но она получила небольшую поддержку, так как состояние было наверху:

do ... while <cond>: 
     <loop body> 

или, как Guido van Rossum put it:

Пожалуйста отвергаем PEP. Больше изменений в этих строках не сделает язык более элегантным или более простым в изучении. Они просто сэкономили несколько поспешных людей, которые печатали, делая других, которые должны читать/поддерживать свой код. интересно, что это значит.

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