IT-Swarm.Net

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

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

/* 

*/

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

975
Dungeon Hunter

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

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

(确保适当地缩进前导'''以避免IndentationError。)

Guido van Rossum(Python的创建者) 发推文 作为“专业提示”。

但是,Python的样式指南,PEP8, 倾向于使用连续的单行注释 ,这也是你在许多项目中都能找到的。编辑通常有一个快捷方式来轻松完成这项工作。

1489
Petr Viktorin

Python确实有 多行字符串/注释语法 除非用作文档字符串,否则 多行字符串 不生成字节码 - 就像#-前置注释一样。实际上,它的行为与评论完全相同。 

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

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

没有特定文本编辑功能的Python编程可能会带来痛苦的体验。找到正确的编辑器(并知道如何使用它)可以在Python编程体验的感知方面产生很大的差异。

编辑器不仅应该能够对所选区域进行注释,而且也应该能够轻松地向左右移动代码块,并且应该自动将光标置于当前位置按 Enter时缩进级别。代码折叠也很有用。


为了防止链接衰减,这里是 Guido van Rossum的推文内容

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

68
unutbu

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

我希望它有所帮助!

31
SomeAnonymousPerson

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

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

这是不正确的。与注释不同,三引号字符串仍然被解析,并且必须在语法上有效,无论它们出现在源代码中的何处。

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

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
Aya

AFAIK,Python没有块注释。要评论单个行,可以使用#字符。

如果你正在使用 Notepad ++有一个块注释的快捷方式 。我敢肯定其他人喜欢 gVimEmacs 有类似的功能。

23
Sanjay T. Sharma

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

10
Anti Earth

如果你发表评论 

"""
long comment here
"""

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

# long comment
# here.

如果您使用vim,您可以使用 https://github.com/tpope/vim-commentary 等插件,通过按Vjgcc自动注释掉长行注释。其中Vj选择2行代码,gcc将其注释掉。 

如果你不想使用上面的插件你可以使用搜索和替换之类的

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

这将用#替换当前和下一行的第一个字符。 

5
alpha_989

在Python 2.7.13上:

单:

"A sample single line comment "

多行:

"""
A sample
multiline comment
on PyCharm
"""
3
A.G

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

这是一个例子:

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

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

3
d.nedelchev

好吧,你可以尝试这个(当运行引用时,第一个问题的输入应该引用'):

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

无论"""之间是否包含任何内容都将被评论。

如果您正在寻找单行注释,那么它是#

3
Kaushik Holla

如何评论: 

'''
   Comment what you want here
'''

要么

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

多行评论没有这样的功能。 #是评论单行代码的唯一方法。[。_____。]你们中的许多人回答'''评论'''作为他们的解决方案。虽然它似乎工作但在python中内部'''将包含的行作为常规字符串,解释器不会忽略使用#的注释。

在这里查看官方文档

2
RATAN KUMAR

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

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
Sham Pat

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

0
Tarjeet Singh

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)

你好

世界

用三重双引号括起文本以支持docstring。

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.
'''
0
Madan Sapkota

使用PyCharm IDE。

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


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.")
0
0m3r

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 + SHIFTK 是为了阻止取消注释。

0
YouKnowWhoIAm

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)
0
Viraj.Hadoop