Почему в Python нет многострочных комментариев? - PullRequest
232 голосов
/ 29 декабря 2008

ОК, я знаю, что строки в тройных кавычках могут служить многострочными комментариями. Например,

"""Hello, I am a 
   multiline comment"""

и

'''Hello, I am a 
   multiline comment'''

Но с технической точки зрения это строки, верно?

Я погуглил и прочитал руководство по стилю Python, но не смог найти технического ответа на вопрос, почему не существует формальной реализации многострочных комментариев типа / * * / У меня нет проблем с использованием тройных кавычек, но мне немного любопытно, что привело к этому дизайнерскому решению.

Ответы [ 16 ]

253 голосов
/ 29 декабря 2008

Я сомневаюсь, что вы получите лучший ответ, чем "Гвидо не чувствовал необходимости в многострочных комментариях".

У Гвидо есть в твиттере об этом:

Совет по Python: Вы можете использовать многострочные строки в качестве многострочных комментариев. Если они не используются в качестве строк документации, они не генерируют код! : -)

59 голосов
/ 29 декабря 2008

Многострочные комментарии легко ломаются. Что, если у вас есть следующее в простой программе калькулятора?

operation = ''
print("Pick an operation:  +-*/")
# Get user input here

Попробуйте прокомментировать это многострочным комментарием:

/*
operation = ''
print("Pick an operation:  +-*/")
# Get user input here
*/

Упс, ваша строка содержит разделитель конца комментария.

34 голосов
/ 29 декабря 2008

Текст в тройных кавычках НЕ должен рассматриваться как многострочный комментарий; условно, они строки документации . Они должны описывать, что делает ваш код и как его использовать, но не для таких вещей, как комментирование блоков кода.

Согласно Гвидо, многострочные комментарии в Python - это просто непрерывные однострочные комментарии (поиск по "блочным комментариям").

Чтобы комментировать блоки кода, я иногда использую следующий шаблон:

if False:
    # A bunch of code
30 голосов
/ 29 декабря 2008

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

12 голосов
/ 29 декабря 2008

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

Большинство языков сценариев также не имеют многострочных комментариев. Может в этом причина?

См. PEP 0008 , раздел Комментарии

И посмотрите, предлагает ли ваш редактор Python комбинацию клавиш для комментирования блоков. Emacs поддерживает его, как и Eclipse, предположительно большинство приличных IDE.

9 голосов
/ 29 декабря 2008

От Дзен Питона :

Должен быть один - и желательно только один - очевидный способ сделать это.

5 голосов
/ 29 декабря 2008

Лично мой стиль комментария, скажем, Java похож на

/*
 * My multi-line comment in Java
 */

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

#
# My multi-line comment in Python
#

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

'
' This is a VB.NET example
'

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

4 голосов
/ 06 апреля 2015

Чтобы закомментировать блок кода в Pycharm IDE:

  • Код | Комментарий с комментарием
  • Windows или Linux: Ctrl + /
  • Mac OS: Команда + /
4 голосов
/ 29 декабря 2008
# This
# is
# a 
# multi-line
# comment

Используйте блок комментария или выполните поиск и замену (s / ^ / # / g) в вашем редакторе, чтобы добиться этого.

3 голосов
/ 15 ноября 2012

Я решил эту проблему, загрузив макрос для моего текстового редактора (TextPad), который позволяет мне выделять строки, а затем вставляет # в начале каждой строки. Подобный макрос удаляет #. Кто-то может спросить, почему многострочный текст необходим, но он полезен, когда вы пытаетесь «отключить» блок кода для целей отладки.

...