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



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



пример:



if n == 0:
print "The end"
631   5  

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, который, оказывается, ее первый язык программирования, чтобы учиться. Без двоеточий существует значительная вероятность того, что она будет продолжать думать: "эти строки отступы, потому что эти строки похожи на специальные предметы."и это может занять некоторое время, чтобы понять, что это не лучший способ думать о вдавливании.

три причины:

  1. для повышения читабельности. Двоеточие помогает потоку кода в следующий блок с отступом.
  2. чтобы помочь текстовым редакторам / IDE, они могут автоматически отступить следующую строку, если предыдущая строка заканчивается двоеточием.
  3. чтобы сделать разбор на 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

    Ничего не найдено.