繁体   English   中英

为什么 python 在评论中使用非常规的三引号?

[英]Why does python use unconventional triple-quotation marks for comments?

为什么 python 不使用 C/C++/Java 等传统风格的注释:

/**
 * Comment lines 
 * More comment lines
 */

// line comments
// line comments
//

这是有特定原因还是只是任意的?

Python 不使用三引号作为注释。 评论使用 hash(又名磅)字符:

# this is a comment

三引号是一个文档字符串,与注释不同,它实际上可以作为程序的真实字符串使用:

>>> def bla():
...     """Print the answer"""
...     print 42
...
>>> bla.__doc__
'Print the answer'
>>> help(bla)
Help on function bla in module __main__:

bla()
    Print the answer

不严格要求使用三引号,只要它是一个字符串。 使用"""只是一种约定(并且具有多行的优点)。

许多答案得到了很多分数,但没有给出事情如何运作的完整视图。 总结...

#comment 是# comment是如何做实际评论的(类似于 bash 和其他一些语言)。 Python 只有“到行尾”注释,它没有显式的多行注释包装器(与 javascript 的/*.. */相对)。 大多数 Python IDE 允许您一次选择并评论一个块,这就是处理这种情况的人数。

然后是普通的单行 python 字符串:它们可以使用'"引号(例如'foo' "bar" )。这些的主要限制是它们不会跨越多行。这就是多行字符串for:这些是由三个单引号或双引号( '''""" )包围的字符串,仅在找到匹配的未转义终止符时才终止。 他们可以根据需要在 go 上添加尽可能多的行,并包括所有中间空格。

这两种字符串类型中的任何一种都定义了一个完全正常的字符串 object。 可以为它们分配一个变量名,对它们应用运算符等。一旦解析,任何格式之间都没有区别。 但是,根据字符串的位置和使用方式,有两种特殊情况......

首先,如果一个字符串刚刚写下来,没有应用额外的操作,也没有分配给变量,它会发生什么? 当代码执行时,裸字符串基本被丢弃。 因此,人们发现使用多行字符串注释掉大量 python 代码很方便(前提是您可以转义任何内部多行字符串)。 这并不常见,或语义正确,但它允许的。

第二种用途是紧跟def Foo()class Foo()或模块开头之后的任何此类裸字符串都被视为包含该 object 文档的字符串,并存储在 ZA8CFDE63319CBD4B666AC 的__doc__属性中. 这是最常见的情况,字符串看起来像是“注释”。 不同之处在于,它们作为已解析代码的一部分发挥着积极作用,存储在__doc__ ... 中,与注释不同,它们可以在运行时读取。

三引号不是评论。 它们是跨越多行的字符串文字,并在结果字符串中包含这些换行符。 这允许您使用

somestr = """This is a rather long string containing
several lines of text just as you would do in C.
    Note that whitespace at the beginning of the line is\
 significant."""

代替

somestr = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
    Note that whitespace at the beginning of the line is\
 significant."

大多数脚本语言使用# 作为注释标记,以便自动跳过向程序加载器指定要运行的解释器的shebang (#.),或者,可以指示解释器自动跳过第一行。 但是将 # 定义为注释标记会更方便,仅此而已,因此它被跳过了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM