Способ создания многострочных комментариев в Python? - PullRequest
1020 голосов
/ 08 октября 2011

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

/* 

*/

. Я пробовал это на Python, но выдает ошибку, так что, вероятно, это не правильный путь.Есть ли в Python функция многострочных комментариев?

Ответы [ 20 ]

1611 голосов
/ 08 октября 2011

Вы можете использовать строки в тройных кавычках. Когда они не являются строкой документации (первым делом в классе / функции / модуле), они игнорируются.

'''
This is a multiline
comment.
'''

(Удостоверьтесь, чтобы правильно ввести отступ ''', чтобы избежать IndentationError.)

Гвидо ван Россум (создатель Python) написал это как «совет».

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

74 голосов
/ 08 октября 2011

Python имеет многострочный * синтаксис строки / комментария в том смысле, что если он не используется в качестве строки документации, многострочные строки не генерируют байт-код - точно так же, как # -приготовленные комментарии. По сути, это действует как комментарий.

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

В любом случае ваш редактор также должен иметь возможность легко закомментировать выбранный регион (поместив # перед каждой строкой в ​​отдельности). Если нет, переключитесь на редактор, который делает.

Программирование на Python без определенных функций редактирования текста может быть болезненным опыт. Поиск подходящего редактора (и умение его использовать) может сделать большой разница в том, как воспринимается опыт программирования на Python.

Мало того, что редактор должен иметь возможность комментировать выбранные регионы, он должен также может легко перемещать блоки кода влево и вправо, и должен автоматически помещать курсор на текущий уровень отступа при нажатии Войти. Сворачивание кода также может быть полезным.


Чтобы защитить от потери ссылок, вот содержание твита Гвидо ван Россума :

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

37 голосов
/ 29 июня 2016

Из принятого ответа ...

Вы можете использовать строки в тройных кавычках.Когда они не являются строкой документации (первым делом в классе / функции / модуле), они игнорируются.

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

Если вы попытаетесь запустить этот код ...

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

Вы получите либо ...

ValueError: invalid \x escape

... на Python 2.x или ...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

... на Python 3.x.

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

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()
30 голосов
/ 16 февраля 2015

В Python 2.7 многострочный комментарий:

"""
This is a
multilline comment
"""

Если вы находитесь в классе, вы должны правильно его пометить.

Например:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """

Надеюсь, это поможет!

24 голосов
/ 08 октября 2011

AFAIK, Python не имеет комментариев к блоку. Для комментирования отдельных строк вы можете использовать символ #.

Если вы используете Блокнот ++ , есть ярлык для комментирования блока . Я уверен, что другие, такие как gVim и Emacs имеют схожие функции.

12 голосов
/ 08 октября 2011

Я думаю, что нет, за исключением того, что многострочная строка не обрабатывается. Однако большинство, если не все Python IDE, имеют ярлык для «закомментирования» нескольких строк кода.

7 голосов
/ 31 января 2018

Если вы поместите комментарий в

"""
long comment here
"""

в середине скрипта, python / linters не будут это распознавать.Складывание будет испорчено, так как вышеупомянутый комментарий не является частью стандартных рекомендаций.Лучше использовать

# long comment
# here.

Если вы используете vim, вы можете использовать плагины типа https://github.com/tpope/vim-commentary,, чтобы автоматически закомментировать длинные строки комментариев, нажав Vjgcc.Где Vj выбирает 2 строки кода, а gcc комментирует их.

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

:.,.+1s/^/# /g.

Это заменит первый символ в текущей и следующей строке на #.

5 голосов
/ 06 октября 2018

Нет такой возможности многострочного комментария. # - единственный способ комментировать одну строку кода. Многие из вас ответили на комментарий как это решение. Хотя это, кажется, работает, но внутренне '' 'в python принимает строки, заключенные в обычные строки, которые интерпретатор не игнорирует как комментарий, используя #.

Проверьте официальную документацию здесь

4 голосов
/ 15 сентября 2017

Что ж, вы можете попробовать это (при запуске цитирования ввод к первому вопросу должен заключаться в '):

"""
print("What's your name? ")
myName = input()
print("It's nice to meet you " + myName)
print("Number of characters is ")
print(len(myName))
age = input("What's your age? ")
print("You will be " + str(int(age)+1) + " next year.")

"""
a = input()
print(a)
print(a*5)

Все, что заключено в """, будет прокомментировано.

Если вы ищете однострочные комментарии, то это #.

4 голосов
/ 27 июня 2018

К сожалению, строковое значение не всегда может использоваться как комментарий!Поэтому безопаснее придерживаться стандарта, добавляющего каждую строку с #.

Вот пример:

test1 = [1, 2, 3, 4,] # test1 содержит 4 целых числа

test2 = [1, 2, '' '3, 4,' ''] # # test2 содержит 2 целых числа и строку '3, 4,'

...