2

我的 CS 老师告诉我,“””三引号用作注释,但我将它作为带有换行符和缩进的字符串来学习。这让我想到 - python在相关语句之外完全三引号行吗?

"""is this completely ignored like a comment"""

- 或者,计算机真的在考虑这个吗?

4

3 回答 3

2

许多开发人员使用三重引号字符串作为注释,但它实际上不是注释,它类似于 python 中的常规字符串,但它允许字符串在多行中。您会发现没有将三引号字符串作为注释的官方参考。

在 python 中,只有一种以 hash 开头的注释,#并且只能包含一行文本。

根据PEP 257,它可以用作文档字符串,这又不是真正的评论。

def foo():
    """
    Developer friendly text for describing the purpose of function
    Some test cases used by different unit testing libraries
    """
   <body of the function>
   

您可以像使用单引号字符串一样将它们分配给变量:

x = """a multi-line text
enclosed by
triple quotes
"""

此外,如果你在 repl 中尝试,会打印三重引号字符串,如果它真的是评论,它应该被打印吗?:

>>> #comment
>>> """triple quoted"""
'triple quoted'
于 2021-08-19T13:46:34.923 回答
1

正如其他人已经指出的那样,它们确实是字符串,而不是 Python 中的注释。我只是想为您的“计算机真的在考虑它吗?”的问题添加更多背景信息。

答案是肯定的,因为它不是评论。以下面的代码为例:

def my_func():
"""
Some string
"""
    print("Hello World!")
my_func()

由于缩进,尝试运行它实际上会产生语法错误。

于 2021-08-19T13:51:37.337 回答
0

据我所知,三引号可用于这两种目的,但#它是评论的标准。

根据这个网站,我可以理解的是,它''' This ''' 可以用作评论,并且因为它们在技术上被作为文档字符串处理(未经测试)' This '也可以作为评论,具体取决于放置它的位置。但是,即使单引号和三引号都可以用作注释,但这并不意味着它们是注释。例如,#注释被解释器完全忽略,而'''注释可能被加载到内存中(只是一个可能的猜测,没有得到证实)。但据我所知,它们没有作为评论处理,如下所示:

在此处输入图像描述

所以它们不是,但它们可以用作注释。一般来说,使用#.

编辑:正如@BTables 指出的那样,如果您没有正确缩进,您将收到缩进错误。所以它们确实被当作字符串处理。

于 2021-08-19T13:58:32.940 回答