5 ответов:
двоеточие есть, чтобы объявить начало отступа блока.
технически это не обязательно; вы можете просто отступать и отступать, когда блок будет выполнен. Однако, основываясь на питон Коан "явное лучше, чем неявное "(EIBTI), я считаю, что Гвидо намеренно сделал двоеточие обязательным, поэтому любой заявление о том, что должны следует за отступом кода заканчивается в двоеточии. (Он также позволяет однострочные, если вы продолжаете после двоеточие, но этот стиль не в широком использовании.)
Это также облегчает работу синтаксически-ориентированных редакторов с автоматическим отступом, что также учитывается в решении.
этот вопрос оказывается Python FAQ, и я нашел один из его ответов Гвидо здесь:
почему двоеточия требуются для операторов if/while/def/class?
двоеточие требуется в первую очередь для повышения читаемость (один из результатов экспериментального языка ABC). Рассмотрим это:
if a == b print aи
if a == b: print aобратите внимание, как второй немного легче читать. Обратите внимание далее, как двоеточие устанавливает пример в этом ответе FAQ; это стандартное использование на английском языке.
другая причина в том, что Толстой облегчает редакторы с подсветкой синтаксиса; они могут искать двоеточия, чтобы решить, когда отступ должен быть увеличен вместо того, чтобы делать более сложный разбор текста программы.
рассмотрим следующий список вещей, которые можно купить в продуктовом магазине, написанный на Pewprikanese.
pewkah lalala chunkykachoo pewpewpew skunkybaconкогда я читаю это, я смущен, являются ли chunkykachoo и pewpewpew своего рода lalala? Или что, если chunkykachoo и pewpewpew имеют отступ только потому, что они являются специальными предметами?
теперь посмотрим, что произойдет, когда мой друг Pewprikanese добавит двоеточие, чтобы помочь мне лучше разобрать список: (
pewkah lalala: (<-- see this colon) chunkykachoo pewpewpew skunkybaconтеперь ясно, что chunkykachoo и pewpewpew-это своего рода лалала.
допустим, есть человек, который начинает изучать Python, который, оказывается, ее первый язык программирования, чтобы учиться. Без двоеточий существует значительная вероятность того, что она будет продолжать думать: "эти строки отступы, потому что эти строки похожи на специальные предметы."и это может занять некоторое время, чтобы понять, что это не лучший способ думать о вдавливании.
три причины:
- для повышения читабельности. Двоеточие помогает потоку кода в следующий блок с отступом.
- чтобы помочь текстовым редакторам / IDE, они могут автоматически отступить следующую строку, если предыдущая строка заканчивается двоеточием.
- чтобы сделать разбор на python немного проще.
насколько я знаю, это умышленное дизайн, чтобы сделать его более очевидным, что читатель должен ожидать отступ после двоеточия.
Это также делает возможными такие конструкции:
if expression: action() code_continues()обратите внимание (как комментатор сделал), что это не совсем блестящий золотой стандарт хорошего стиля Python. Было бы гораздо лучше иметь пустой, там:
if expression: action() code_continues()чтобы избежать путаницы. Я просто хотел прояснить, с первым примером, что это возможно писать так, так как есть код для
ifсразу после двоеточия позволяет компилятору понять, что в следующей строке не быть с отступом.
http://python-history.blogspot.com/2009/02/early-language-design-and-development.html
и да, двоеточие полезно в однострочных и менее раздражает, чем точка с запятой. Также руководство по стилю в течение длительного времени рекомендуется разбивать на несколько строк только тогда, когда оно заканчивается двоичным оператором
x = (23 + 24 + 33)добавление двоеточия сделало составной оператор похожим образом для большей однородности стиля.
есть 'без двоеточия' кодирование для CPython, а также без двоеточия диалекта, называемого Кобра. Те не брали трубку.
Comments