Способ создания многострочных комментариев в Python?

959

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

/* 

*/

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

  • 2
    Я полагаю, что, будучи интерпретированным языком, имеет смысл, как и в случае с sh, bash или zsh, что # - единственный способ комментировать. Я предполагаю, что таким образом легче интерпретировать скрипты Python.
  • 1
    Я знаю, что этот ответ старый, но я столкнулся с ним, потому что у меня был тот же вопрос. Принятый ответ работает, хотя я не знаю достаточно Python, чтобы понять тонкости того, почему он может быть неправильным (согласно ADTC).
Показать ещё 4 комментария
Теги:
python-3.x
comments
python-2.7

17 ответов

1380
Лучший ответ

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

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

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

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

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

  • 12
    Гектометр Я поместил огромную многострочную строку в скрипт python test.py чтобы увидеть. Когда я делаю import test , test.pyc файл test.pyc . К сожалению, файл pyc огромен и содержит всю строку в виде простого текста. Я что-то неправильно понимаю, или этот твит неверен?
  • 18
    @unutbu, если это была единственная вещь в файле, это была строка документации. Поместите некоторый код перед ним, и он исчезнет из pyc . Я отредактировал ответ и поместил «модуль» в список вещей, в которых есть строки документации.
Показать ещё 22 комментария
68

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

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

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

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

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


Чтобы защитить от распада ссылок, вот содержание Guido van Rossum tweet:

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

  • 3
    строка с тройными кавычками ('' ') действительно работает для выполнения многострочных комментариев.
  • 0
    Спасибо. Использовали ('' ') и ("" "), чтобы закомментировать блок, но это не помогло мне в приложениях Django. Поэтому выбрал IDLE, и есть варианты, такие как« Закомментировать регион » и« Раскомментировать регионы » (сочетание клавиш: Alt + 3 и Alt + 4 соответственно) в меню Формат . Теперь это стало проще, чем когда-либо.
Показать ещё 6 комментариев
30

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

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

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

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

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()
  • 0
    Затем вы можете использовать r'raw string' - r'\xor' == '\\xor' .
  • 1
    Ну, любой «настоящий» многострочный комментарий также должен быть проанализирован и синтаксически действителен. Комментарии в стиле C не могут содержать */ как это, например, завершит блок.
Показать ещё 2 комментария
30

В 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
   """

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

  • 17
    тройные кавычки - это способ вставить текст, который ничего не делает (я думаю, вы могли бы сделать это и с обычными строками в одинарных кавычках), но они не являются комментариями - интерпретатор действительно выполняет строку (но строка не ничего не делать). Вот почему отступ в тройном кавычке «комментарий» важен.
  • 0
    Это работает в Python 3.6.0
Показать ещё 2 комментария
23

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

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

  • 1
    это неверно, см. ответы об использовании тройных кавычек.
  • 8
    @FernandoGonzalezSanchez: Это действительно не так. Эту «многострочную строку как комментарий» лучше всего описать как «подсказку». Официальные документы Python ничего не говорят по этому поводу, поэтому вопрос, заданный OP.
Показать ещё 1 комментарий
10

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

5

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

"""
long comment here
"""

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

# long comment
# here.

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

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

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

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

3

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

Вот пример:

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

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

3

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

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

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

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

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

3

Как прокомментировать:

'''
   Comment what you want here
'''

или же

 """
    Comment what you want here
 """
3

На Python 2.7.13:

Не замужем:

"A sample single line comment "

Multiline:

"""
A sample
multiline comment
on PyCharm
"""
  • 2
    Вы говорите, что одинарные кавычки создают комментарий в Python 2.7?
  • 0
    да @mcalex это работает
Показать ещё 1 комментарий
2

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

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

0

Выберите строки, которые вы хотите прокомментировать, а затем используйте "CTRL +?" комментировать или раскомментировать код Python в превосходном редакторе. Для одной строки вы можете использовать 'Shift + #'.

0

'' 'Многострочные комментарии начались ЗДЕСЬ

import tkinter as tk
root = tk.Tk()
w = tk.Label( text="Hello Tkinter")

logo = tk.PhotoImage(file="Python.PNG")

w1 = tk.Label(root, image=logo).pack(side="right")
explanation = """At Present, only GIF and PPM/PGM are supported but am
trying it with PNG. Interface does exit to allow image file to be added easily."""

w2 = tk.Label(root, justify=tk.LEFT,padx = 0, text=explanation).pack(side="left")
root.mainloop()

'' 'Многострочный комментарий заканчивается ЗДЕСЬ.. означает, что приведенный выше код не будет выполняться и является комментарием

0

Встроенные комментарии в python начинаются с хеш-символа.

hello = "Hello!" # this is inline comment
print(hello)

Здравствуйте!

Обратите внимание, что хеш-символ в строковом литерале является просто хеш-символом.

dial = "Dial #100 to make an emergency call."
print(dial)

Наберите # 100, чтобы сделать экстренный вызов.

Хеш-символ также можно использовать для однострочных или многострочных комментариев.

hello = "Hello"
world = "World"
# first print hello
# and print world
print(hello)
print(world)

Привет

Мир

Заключите текст в тройные двойные кавычки для поддержки строки документации.

def say_hello(name):
    """
    This is docstring comment and
    it support multi line.
    :param name it your name
    :type name str
    """
    return "Hello " + name + '!'


print(say_hello("John"))

Привет Джон!

Заключите текст в тройные одинарные кавычки для блочных комментариев.

'''
I don't care the params and
docstrings here.
'''
0

Многострочный комментарий на самом деле не существует в Python. Приведенный ниже пример состоит из неназначенной строки, которая проверяется Python на наличие синтаксических ошибок. Несколько текстовых редакторов, таких как NotePad++ предоставляют нам ярлыки для комментирования написанного фрагмента кода или слов.

def foo():
    "This is a doc string."
    # A single line comment
    """
       This 
       is a multiline
       comment/String
    """
    """
    print "This is a sample foo function"
    print "This function has no arguments"
    """
    return True

Кроме того, CTRL + K ярлык в NotePad++ для блокировки комментариев, он добавляет # перед каждой строкой под выделением. CTRL + SHIFT + K предназначены для раскомментирования блока.

0

Многострочный комментарий в Python: для меня оба "'" и "" работали

Пример:

a = 10
b = 20
c = a+b
'''
print ('hello')
'''
print ('Addition is : ',a+b)

Пример:

a = 10
b = 20
c = a+b
"""
print ('hello')
"""
print ('Addition is : ',a+b)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню