2010-02-03 5 views
16

Есть ли веская причина, почему в python нет инструкции по управлению потоком?Почему в инструкции python нет инструкции по управлению потоком?

Почему люди должны писать while и break явно?

+1

«писать, пока ... явно»? Что это значит? Как 'do while' не писать' while' явно? Я не понимаю эту часть вопроса. –

+1

В чем причина необходимости знать это? Как этот фактоид помогает решить любые проблемы программирования? –

+3

Это очень хороший вопрос и общий источник проблем для новых пользователей Python. –

ответ

11

Он был предложен в PEP 315, но не был реализован, потому что никто не придумал синтаксис, который более ясен, чем while True с внутренним if-break.

+1

Что случилось с Do ... Хотя правда? – Mavrik

+3

Посмотрите http://mail.python.org/pipermail/python-dev/2006-February/060718.html, который связан с PEP. Это объясняет проблему с различными синтаксическими альтернативами более подробно. –

10

Возможно, потому что Гвидо не думал, что это необходимо. Существует множество различных команд управления потоком, которые вы могли бы поддержать, но большинство из них являются вариантами друг друга. Честно говоря, я нашел заявление do-while одним из менее полезных.

+0

+1, я почти всегда хочу, чтобы мои условия были наверху. делает «нулевой случай» намного чище. – Javier

+14

Да, возможно, GuiDO не думал, что это стоит WHILE –

+1

в Pascal. Я всегда использую repeat-until (condition). В C++ я использую do-while (условие) редко. Вы можете это объяснить? :) –

2

Python добавляет функции только тогда, когда они значительно упрощают некоторые коды.

while True: 
    ... 
    if not cond: break 

не менее просто, чем цикл Do-While, для которых не существует никакого очевидного синтаксис естественного питона в любом случае.

do: 
    ... 
    while cond 

(Выглядит странно)

или это?

do: 
    ... 
while cond 

(это время выглядит как обычное заявление в то время)

+3

'break' в условном выражении в середине цикла требует большего анализа кода, чем анализ явной структуры 'do ... until ... '. Таким образом, чтение кода будет упрощено. Что касается «while cond», выглядящего странным, его можно было бы заменить эквивалентом 'до cond', который был бы явным. Я предполагаю, что есть веские причины не делать этого ... до тех пор, пока структура управления не будет; чтение оригинальной дискуссии, вероятно, было бы полезно. – EOL

3

Потому что тогда вы бы два способа сделать что-то.

+3

Цикл do-while/repeat-until не совпадает с циклом while. Первый будет выполняться хотя бы один раз, но последний может вообще не выполняться. – GreenMatt

+0

@ GreenMatt, это не то, о чем он говорит. После этого у вас будет два способа ручного управления по условию. Предварительные и пост-условия не _really_ отличаются друг от друга, чтобы оправдать расширение синтаксиса Python. –

+0

@ Matt Joiner: Во-первых, я не могу предположить, что думал Остин, когда он сделал эту запись. Чтобы ответить на ваш комментарий: я понимаю, что мышление заключается в том, что Python не нуждается в дополнительной структуре цикла. Я просто указываю на то, что кто-то, кто не знает иначе, подумает, что два механизма зацикливания делают то же самое. – GreenMatt

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