协慌网

登录 贡献 社区

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

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

/* 

*/

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

答案

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

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

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

Guido van Rossum(Python 的创建者)在推文中称它为 “专业提示”。

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

Python 中确实有一个多行字符串 / 注释语法在这个意义上,除非使用文档字符串, 多行字符串不产生字节码 - 就像# -prepended 意见。实际上,它的行为与评论完全相同。

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

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

没有特定文本编辑功能的 Python 编程可能是一种痛苦的经历。找到正确的编辑器(并知道如何使用它)可以对 Python 编程体验的感知方式产生重大影响。

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


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

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

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

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

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

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

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