Почему Python не имеет многострочных комментариев?

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

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

и

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

Но технически говоря, это строки, правильные?

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

Ответ 1

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

Гвидо написал в твиттере об этом:

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

Ответ 2

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

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

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

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

К сожалению, ваша строка содержит разделитель конечных комментариев.

Ответ 3

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

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

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

if False:
    # A bunch of code

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

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

Ответ 7

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

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

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

#
# My multi-line comment in Python
#

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

'
' This is a VB.NET example
'

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

Ответ 8

# This
# is
# a 
# multi-line
# comment

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

Ответ 9

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

  • Код | Комментарий с комментарием строки
  • Windows или Linux: Ctrl + /
  • Mac OS: Command + /

Ответ 10

Я решил это, загрузив макрос для моего текстового редактора (TextPad), который позволяет выделить строки, а затем вставляет # в первую строку. Аналогичный макрос удаляет #. Некоторые могут спросить, почему многострочный необходим, но он пригодится, когда вы пытаетесь "отключить" блок кода для целей отладки.

Ответ 11

Предположим, что они просто считались ненужными. Так как это просто, просто наберите #a comment, многострочные комментарии могут состоять только из нескольких отдельных строк.

Для HTML, с другой стороны, существует потребность в мультилитерах. Сложнее набирать <!--comments like this-->.

Ответ 12

Это просто догадка.. но

Поскольку они являются строками, они имеют некоторое семантическое значение (компилятор не избавляется от них), поэтому имеет смысл использовать их в качестве docstrings. Они фактически становятся частью AST, поэтому извлечение документации становится проще.

Ответ 13

Поскольку # соглашение является общим, и на самом деле вы ничего не можете сделать с многострочным комментарием, который нельзя использовать С# -значным комментарием. Это историческая авария, как и предки /* ... */ комментариев, возвращающихся к PL/I,

Ответ 14

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

void someFunction()
{
    Something
    /*Some comments*/
    Something else
}

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

void someFunction()
{ /*
    Something
   /* Comments */
   Something more*/
}

Это действительно раздражает.

Ответ 15

Многострочные комментарии с использованием IDLE on:

  • Mac OS X, после выбора кода, прокомментируйте блок кода с помощью Ctrl + 3 и раскомментируйте с помощью Ctrl + 4.

  • Windows, после выбора кода, комментируйте блок кода с помощью Ctrl + Alt + 3 и раскомментируйте использование Ctrl + At + 4.

Ответ 16

Для тех, кто ищет многострочные комментарии в Python - использование формата тройных кавычек может иметь некоторые проблемные последствия, поскольку я только что научился трудному пути. Учти это:

this_dict = {
    'name': 'Bob',

"""
This is a multiline comment in the middle of a dictionary
"""

    'species': 'Cat'
}

Многострочный комментарий будет заправлен в следующую строку, путая ключ 'species'. Лучше просто использовать # для комментариев.

Ответ 17

Я помню, как читал об одном парне, который поставил свои многострочные комментарии в переменную с тройным кавычком:

x = '''
This is my
super-long mega-comment.
Wow there are a lot of lines
going on here!
'''

Это занимает немного памяти, но дает вам многострочные функции комментариев, а также большинство редакторов выделяют синтаксис для вас:)

Также легко комментировать код, просто обернув его

x = '''

и

'''