Почему у Python нет многострочных комментариев?
хорошо, я знаю, что строки с тройными кавычками могут служить многострочными комментариями. Например,
"""Hello, I am a
multiline comment"""
и
'''Hello, I am a
multiline comment'''
но технически говоря это строки, правильно?
я погуглил и прочитал руководство по стилю Python, но я не смог найти технический ответ на то, почему нет формальной реализации многострочных, / * * / типа комментариев. У меня нет проблем с использованием тройных кавычек, но мне немного любопытно, что привело к этому дизайну решение.
16 ответов:
Я сомневаюсь, что вы получите лучший ответ, чем "Гвидо не чувствовал необходимости для многострочных комментариев".
Гвидо твиттере это:
Совет Python: вы можете использовать многострочные строки в качестве многострочных комментариев. Если использовать как комментарии, они генерируют никакого кода! : -)
многострочные комментарии легко ломаются. Что делать, если у вас есть следующее в простой программе калькулятора?
operation = '' print("Pick an operation: +-*/") # Get user input hereпопробуйте прокомментировать это с помощью многострочного комментария:
/* operation = '' print("Pick an operation: +-*/") # Get user input here */ой, ваша строка содержит разделитель конца комментария.
текст в тройных кавычках не должен рассматриваться как многострочные комментарии; по соглашению, они docstrings. Они должны описывать, что делает ваш код и как его использовать, но не для таких вещей, как комментирование блоков кода.
согласно Гвидо,многострочные комментарии в Python - это просто непрерывные однострочные комментарии (поиск "блок комментариев").
комментировать блоки кода, я иногда использую следующий выкройка:
if False: # A bunch of code
Это, вероятно, восходит к основной концепции, что должен быть один очевидный способ выполнить задачу. Дополнительные стили комментариев добавляют ненужные осложнения и могут снизить читаемость.
ну, тройные кавычки используются в качестве многострочных комментариев в docstrings. И # комментарии используются в качестве встроенных комментариев, и люди привыкают к нему.
большинство языков сценариев также не имеют многострочных комментариев. Может в этом причина?
посмотреть PEP 0008, раздел комментарии
и посмотреть, если ваш редактор Python предлагает некоторые сочетания клавиш для комментирования блока. Emacs поддерживает его, как и Eclipse, предположительно большинство приличных Айдес знает.
с Дзен питона:
должен быть один-и, желательно, только один-очевидный способ сделать это.
лично в моем стиле комментировать, скажем, Java-это как
/* * My multi-line comment in Java */поэтому наличие однострочных комментариев не так уж плохо, если ваш стиль типичен для предыдущего примера, потому что в сравнении у вас будет
# # My multi-line comment in Python #VB.NET это также язык с однострочным комментированием, и лично я нахожу его раздражающим, поскольку комментарии в конечном итоге выглядят менее похожими на комментарии и больше похожи на какую-то цитату
' ' This is a VB.NET example 'однострочные комментарии в конечном итоге имеют меньшее использование символов, чем многострочные комментарии, и менее вероятно, что они будут экранированы некоторыми изворотливыми символами в инструкции regex? Хотя я склонен согласиться с Недом.
# This # is # a # multi-line # commentиспользуйте блок комментариев или поиск и замену (s/^/#/g) в редакторе для достижения этой цели.
чтобы закомментировать блок кода Pycharm IDE:
- код / комментарий с комментарием строки
- Windows или Linux: Ctrl + /
- Mac OS:команда + /
Я решил эту проблему, загрузив макрос для моего текстового редактора (TextPad), который позволяет мне выделять строки, а затем вставляет # в первую строку каждой строки. Подобный макрос удаляет#. некоторые могут спросить, почему требуется многострочный, но он пригодится, когда вы пытаетесь "отключить" блок кода для целей отладки.
потому что # соглашение является общим, и на самом деле нет ничего, что вы можете сделать с многострочным комментарием, что вы не можете с комментарием #-sign. Это историческая случайность, как и родословная
/* ... */комментарии, возвращающиеся к PL / I,
предположим, что они просто считались ненужными. Так как это так легко просто ввести
#a comment, многострочные комментарии могут просто состоять из многих однострочных комментариев.на HTML, С другой стороны, есть больше необходимости в многослойных системах. Это труднее продолжать печатать
<!--comments like this-->.
Это всего лишь догадка .. но
поскольку они являются строками, они имеют некоторое семантическое значение (компилятор не избавляется от них), поэтому имеет смысл использовать их в качестве docstrings. Они фактически становятся частью АСТ, поэтому извлечение документации становится проще.
кроме того, многострочные комментарии-сука. Извините, но независимо от языка, я не использую их ни для чего другого, кроме целей отладки. Скажем, у вас есть такой код:
void someFunction() { Something /*Some comments*/ Something else }затем вы обнаружите, что в вашем коде есть что-то, что вы не можете исправить с помощью отладчика, поэтому вы начинаете вручную отлаживать его, комментируя все меньшие и меньшие фрагменты кода с помощью этих многострочных комментариев. Это тогда дало бы функция:
void someFunction() { /* Something /* Comments */ Something more*/ }Это действительно раздражает.
многострочные комментарии с помощью ожидания on:
Mac OS X, после выбора кода, прокомментируйте блок кода с Ctrl+3 и раскомментировать с помощью Ctrl+4.
Windows после выбора кода , прокомментируйте блок кода с помощью Ctrl+ Alt+3 и раскомментировать с помощью Ctrl+ At+4.
Я помню, как читал об одном парне, который помещал свои многострочные комментарии в переменную с тройными кавычками:
x = ''' This is my super-long mega-comment. Wow there are a lot of lines going on here! '''Это занимает немного памяти, но это дает вам функциональность многострочного комментария, и плюс большинство редакторов выделит синтаксис для вас:)
Это также легко прокомментировать код, просто обернув его с
x = '''и
'''
Comments