在Python中创建多行注释的方法?

时间:2011-10-08 12:51:13

标签: python python-3.x python-2.7 comments documentation

我最近开始学习Python,但我找不到如何实现多行注释。大多数语言都有块注释符号,如

/* 

*/

我在Python中试过这个,但它会抛出一个错误,所以这可能不是正确的方法。 Python实际上是否具有多行注释功能?

26 个答案:

答案 0 :(得分:1556)

您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们将被忽略。

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

(请务必相应缩进前导'''以避免IndentationError。)

Guido van Rossum(Python的创造者)tweeted this作为“专业提示”。

然而,Python的样式指南,PEP8,favors using consecutive single-line comments,这也是你在许多项目中可以找到的。编辑通常有一条捷径可以轻松完成。

答案 1 :(得分:73)

Python确实有一个multiline string/comment syntax,除非用作文档字符串,multiline strings generate no bytecode - 就像# - 前置注释。实际上,它的行为与评论完全相同。

另一方面,如果你说这种行为必须在官方记录 docs是一个真正的评论语法,然后是的,你说这不是正确的 保证作为语言规范的一部分。

在任何情况下,您的编辑器也应该能够轻松地注释掉所选的 区域(通过在每条线的前面放置#)。如果没有,请切换到 这样做的编辑。

使用Python进行编程而没有某些文本编辑功能可能会非常痛苦 经验。找到合适的编辑器(并知道如何使用它)可以做大 感知Python编程体验的方式不同。

编辑不仅应该能够评论选定的区域,而且应该 也能够轻松地向左右移动代码块 按下时自动将光标置于当前缩进级别 输入。代码折叠也很有用。


为了防止链接衰减,以下是Guido van Rossum's tweet

的内容
  

@BSUCSClub Python提示:您可以将多行字符串用作多行注释。除非用作文档字符串,否则它们不会生成代码! : - )

答案 2 :(得分:36)

从接受的答案中......

  

您可以使用三引号字符串。当它们不是文档字符串(类/函数/模块中的第一件事)时,它们将被忽略。

这根本不是真的。与注释不同,三引号字符串仍然被解析,并且必须在语法上有效,无论它们出现在源代码中的哪个位置。

如果您尝试运行此代码......

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()

答案 3 :(得分: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
   """

我希望它有所帮助!

答案 4 :(得分:24)

AFAIK,Python没有阻止评论。要评论各个行,您可以使用#字符。

如果您使用Notepad++there is a shortcut for block commenting。我确信gVimEmacs之类的其他人也有相似的功能。

答案 5 :(得分:11)

我认为它没有,除了不处理多行字符串。但是,大多数(如果不是全部)Python IDE都有一个用于“注释掉”多行代码的快捷键。

答案 6 :(得分:7)

如果您在

中发表评论
  head3
  random words
  number=200
  random words
  ...
  head4
  random words
  number=200
  random words
  ...
  head5
  random words
  number=500
  random words
  ...

在脚本中间,python / linters不会重新识别它。折叠将被搞砸,因为上述评论不是标准建议的一部分。最好使用

"""
long comment here
"""

如果您使用# long comment # here. ,则可以使用https://github.com/tpope/vim-commentary这样的插件,按vim自动注释掉多行评论。其中Vjgcc选择2行代码,Vj将其注释掉。

如果您不想使用上述插件,可以使用搜索和替换

gcc

这将用:.,.+1s/^/# /g替换当前和下一行的第一个字符。

答案 7 :(得分:5)

多行注释没有这种功能。 #是注释一行代码的唯一方法。 你们中的许多人都回答'''评论'''作为他们的解决方案。尽管它似乎可以正常工作,但在Python内部使用'''会将封闭的行作为常规字符串使用,解释器不会忽略使用#等注释。

Check official documentation here

答案 8 :(得分:4)

不幸的是,并非总是字符串化可以用作注释!因此,更安全的做法是坚持在每行前面加#的标准。

这里是一个例子:

test1 = [1、2、3、4]#test1包含4个整数

test2 = [1,2,'''3,4,''']#test2包含2个整数和字符串'3,4,'

答案 9 :(得分:4)

好吧,你可以尝试这个(当运行引用时,第一个问题的输入应该引用<% response.setHeader("Strict-Transport-Security" ,"max-age=7776000" );%> ):

'

""" 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) 之间的任何内容都会被评论。

如果您正在寻找单行评论,那么它是"""

答案 10 :(得分:3)

如何评论:

'''
   Comment what you want here
'''

 """
    Comment what you want here
 """

答案 11 :(得分:3)

在Python 2.7.13上:

"A sample single line comment "

多:

"""
A sample
multiline comment
on PyCharm
"""

答案 12 :(得分:1)

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's support multi line.
    :param name it's your name
    :type name str
    """
    return "Hello " + name + '!'


print(say_hello("John"))
  

约翰你好!

用三重单引号引起来的文本作为块注释。

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

答案 13 :(得分:1)

'''多行评论从这里开始

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()

'''''多行注释在这里结束。.意味着上面的代码将无法运行,并且是注释

答案 14 :(得分:1)

我建议不要在多行注释中使用"""

以下是一个简单的示例,以突出显示可能被视为意外行为的内容:

print('{}\n{}'.format(
    'I am a string',
    """
    Some people consider me a
    multi-line comment, but 
    """
    'clearly I am also a string'
    )
)

现在看一下输出:

I am a string

    Some people consider me a
    multi-line comment, but 
    clearly I am also a string

所以发生的事情是,多行字符串没有被视为注释,而是与'clearly I'm also a string'串联形成单个字符串。

如果要注释多行,请按照PEP8准则

print('{}\n{}'.format(
    'I am a string',
    # Some people consider me a
    # multi-line comment, but 
    'clearly I am also a string'
    )
)

输出:

I am a string
clearly I am also a string

答案 15 :(得分:1)

Visual Studio Code通用官方多行注释切换。

macOS:选择代码块,然后选择 + /

Windows:选择代码块,然后选择 Ctrl + /

答案 16 :(得分: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

此外,在Notepad++中使用 CTRL + K 的快捷方式来阻止注释,它在所选内容的每一行前面添加了一个# CTRL + SHIFT + K 用于取消注释。

答案 17 :(得分:0)

如果在代码行中写注释,则必须写注释,在#号之前保留2个空格,在#号之前保留1个空格

print("Hello World")  # printing

如果在新行上写评论,则必须写评论,在#号中留1个空格kn

# single line comment

要写超过1行的注释,请使用3个引号

"""
This is a comment
written in
more than just one line
"""

答案 18 :(得分:0)

您可以使用以下内容。这称为DockString。

def my_function(arg1):
    """
    Summary line.
    Extended description of function.
    Parameters:
    arg1 (int): Description of arg1
    Returns:
    int: Description of return value
    """
    return arg1

print my_function.__doc__

答案 19 :(得分:0)

在其他答案中,我发现最简单的方法是使用IDE注释功能,该功能使用#的python注释支持。

我正在使用Anaconda Spyder,它具有:-

  

Ctrl + 1-注释/取消注释
  Ctrl + 4-注释一段代码
  Ctrl + 5   -取消注释代码段

它将用#注释/取消注释单行/多行代码。

我觉得最简单。

例如封锁评论

# =============================================================================
#     Sample Commented code in spyder
#  Hello World !
# =============================================================================

答案 20 :(得分:0)

要注释掉Python中的多行代码,只需在每行上使用#单行注释:

# This is comment 1
# This is comment 2 
# This is comment 3

在Python中编写“适当的”多行注释的方法是使用"""语法的多行字符串 Python具有文档字符串(或文档字符串)功能。它为程序员提供了一种在每个Python模块,函数,类和方法中添加快速注释的简便方法。

'''
This is
multiline
comment
'''

还请注意,您可以通过这样的类对象访问文档字符串

myobj.__doc__

答案 21 :(得分:0)

是的,两者都可以使用

...

Specification<T> whereSpecifications = Specification.where(yourWhereSpeficiation);
Sort sortByProperty = Sort.by(Sort.Order.asc("property"));
PageRequest orderedPageRequest = PageRequest.of(1, 100, sortByProperty);

userRepository.findAll(whereSpecifications, PageRequest.of(page, limit, orderedPageRequest));

`'''
Comments
'''` 

但是,在IDE中运行时,您唯一需要记住的就是,您必须“运行”整个文件才能被多行代码接受。逐行“运行”将无法正常工作,并且会显示错误。

答案 22 :(得分:0)

使用PyCharm IDE。

  

您可以使用 Ctrl + / comment uncomment 行代码。   Ctrl + / 注释或取消注释当前行或用单行注释 ({# in Django templates, or # in Python scripts) 注释的几行。    Pressing Ctrl+Shift+/ (对于Django模板中选定的源代码块)用 {% comment %} and {% endcomment %} 标签包围该块。

     
n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)

print("Loop ended.")

选择所有行,然后按 Ctrl + /


# n = 5
# while n > 0:
#     n -= 1
#     if n == 2:
#         break
#     print(n)

# print("Loop ended.")

答案 23 :(得分: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)

答案 24 :(得分:-1)

选择要注释的行,然后使用“ CTRL +?”在sublime编辑器中注释或取消注释python代码。 对于单行,您可以使用'shift +#'。

答案 25 :(得分:-1)

在python中,您可以按照以下步骤轻松使用多行注释

您可以将此文档字符串用于 Python 中的多行注释。

""" print("结果为真")

"""