在这个python代码中使用docstring有什么用?

时间:2017-09-04 03:30:36

标签: python docstring

我在简单的电子邮件python脚本中有关于docstrings的问题。

message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

我经常在电子邮件脚本中看到这样的文档字符串。我的问题是,docstring在做什么?我认为docstrings仅用于help命令等。如果这是一个愚蠢的问题,我道歉。

谢谢!

3 个答案:

答案 0 :(得分:2)

带有"""..."""(三引号)的字符串称为多行字符串。多行字符串和文档字符串之间存在区别。后者是前者的一个子集。

有问题的一个被分配给一个变量,所以不是一个文档字符串。文档字符串是您在函数顶部找到的内容,如下所示:

def foo():
    """This is a doc-string"""
    pass

打印foo.__doc__会给你

print(foo.__doc__)
'This is a doc-string'

您应该明白,只有函数中的第一个多行字符串(如果未分配)才会成为函数的文档字符串(前提是没有设置优化开关),其余部分都将被丢弃。

相比之下,

message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

发生的是一个多行字符串,其中包含一些分配给变量message的C样式格式参数。

进一步阅读:

答案 1 :(得分:1)

这不是文档字符串,只是普通字符串(str)。使用三重双引号(""")或三重单引号('''),您告诉Python将其用作长字符串。此字符串由\n分隔。 Docstrings经常使用这种长字符串来简化阅读。

在您的代码中,似乎正在准备电子邮件,使用变量来指定主题,文本,CC等。

希望它有意义。

答案 2 :(得分:0)

这是因为从docs开始在多行中编写字符串非常有用:

  

字符串文字可以跨越多行。一种方法是使用   三重报价:""" ..."""或'' ...'''。