[英]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.