Какова цель двоеточия перед блоком в Python? - PullRequest
65 голосов
/ 19 октября 2008

Какова цель двоеточия перед блоком в Python?

Пример:

if n == 0:
    print "The end"

Ответы [ 5 ]

71 голосов
/ 19 октября 2008

Двоеточие используется для объявления начала блока с отступом.

Технически это не обязательно; Вы можете просто сделать отступ и отступ, когда блок будет сделан. Однако, основываясь на Python koan «явное лучше, чем неявное» (EIBTI), я считаю, что Гвидо преднамеренно сделал обязательным двоеточие, поэтому любое утверждение, что должно сопровождаемый отступом кода заканчивается двоеточием. (Он также допускает использование однострочников, если вы продолжаете после двоеточия, но этот стиль не используется широко).

Это также облегчает работу редакторов с автоматическим отступом с учетом синтаксиса, что также учитывается при принятии решения.


Этот вопрос оказывается FAQ по Python , и я нашел один из ответов Гвидо здесь :

Почему для операторов if / while / def / class требуются двоеточия?

Двоеточие требуется прежде всего для улучшения читабельности (один из результатов экспериментального языка ABC). Учтите это:

if a == b 
    print a

против

if a == b: 
    print a

Обратите внимание, что второй текст немного легче читать. Далее обратите внимание на то, как двоеточие приводит пример в этом ответе на часто задаваемые вопросы; это стандартное использование на английском языке.

Другая незначительная причина в том, что двоеточие облегчает редакторам подсветку синтаксиса; они могут искать двоеточия, чтобы решить, когда нужно увеличить отступ, вместо того, чтобы выполнять более сложный анализ текста программы.

23 голосов
/ 23 сентября 2009

Рассмотрим следующий список вещей, которые можно купить в продуктовом магазине, написанный на Pewprikanese.

pewkah
lalala
    chunkykachoo
    pewpewpew
skunkybacon

Когда я читаю это, я в замешательстве. Являются ли chunkykachoo и pewpewpew своего рода лалала? Или что если chunkykachoo и pewpewpew имеют отступ только потому, что они являются специальными элементами?

Теперь посмотрим, что произойдет, когда мой друг из Pewprikanese добавит двоеточие, чтобы помочь мне лучше разобрать список: (<- вот так) </p>

pewkah
lalala:   (<-- see this colon)
    chunkykachoo
    pewpewpew
skunkybacon

Теперь ясно, что chunkykachoo и pewpewpew - это своего рода лалала.

Допустим, есть человек, который начинает изучать Python, который, как оказалось, является ее первым языком программирования для изучения. Без двоеточий существует значительная вероятность того, что она будет думать: «эти строки имеют отступы, потому что эти строки похожи на специальные элементы», и может потребоваться некоторое время, чтобы понять, что это не лучший способ думать об отступе.

15 голосов
/ 19 октября 2008

Три причины:

  1. Для повышения читабельности. Двоеточие помогает потоку кода попасть в следующий блок с отступом.
  2. Чтобы помочь текстовым редакторам / IDE, они могут автоматически делать отступ для следующей строки, если предыдущая строка заканчивалась двоеточием.
  3. Чтобы немного облегчить синтаксический анализ с помощью python.
5 голосов
/ 19 июня 2010

Насколько я знаю, это намеренный дизайн, чтобы сделать более очевидным, что читатель должен ожидать отступ после двоеточия.

Это также делает возможным создание таких конструкций:

if expression: action()
code_continues()

Обратите внимание (как это сделал комментатор), что это не совсем блестящий золотой стандарт хорошего стиля Python. Было бы гораздо лучше иметь пробел, там:

if expression: action()

code_continues()

, чтобы избежать путаницы. Я просто хотел прояснить в первом примере, что можно писать так, поскольку наличие кода для if, следующего сразу за двоеточием, позволяет компилятору понять, что следующая строка должна не быть отступом.

0 голосов
/ 22 сентября 2018

По словам Гвидо Ван Россума, изобретателя Python, идея использования двоеточия для придания структуры большей ясности вдохновлена ​​более ранними экспериментами с предшественником Python, языком ABC, которые также предназначались для начинающих. По-видимому, на ранних тестах начинающие ученики прогрессировали быстрее с толстой кишкой, чем без нее. Прочитайте всю историю в блоге истории Python Гвидо.

http://python -history.blogspot.com / 2009/02 / early-language-design-and-development.html

И да, двоеточие полезно в однострочниках и менее раздражает, чем точка с запятой. Также руководство по стилю долгое время рекомендует разбивать на несколько строк только тогда, когда оно заканчивается двоичным оператором

x = (23 + 
     24 + 
     33)

С добавлением двоеточия составные выражения выглядят одинаково для большей однородности стиля.

Существует кодирование «без колонок» для CPython, а также диалект без двоеточий, называемый кобра. Те, не забрать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...