带有三重单引号和三重双引号的文档字符串有啥区别?

Posted

技术标签:

【中文标题】带有三重单引号和三重双引号的文档字符串有啥区别?【英文标题】:What's the difference on docstrings with triple SINGLE quotes and triple DOUBLE quotes?带有三重单引号和三重双引号的文档字符串有什么区别? 【发布时间】:2012-10-16 09:06:56 【问题描述】:

我只是想知道两种编写 Python Docstrings 的方式有什么区别 (__doc__):

    三个单引号:

    '''
    Comment goes here
    '''  
    

    三个双引号:

    """
    Comment goes here
    """
    

在生成文档时,文档字符串的格式化方式是否有任何细微差别?

【问题讨论】:

注意:就 Python 语法/解析器而言,“文档字符串”只是一个 普通 字符串文字。 """'''"' 的规则相同。 【参考方案1】:

没有。他们是一样的。唯一的区别是第一个可以包含三个非转义双引号的序列,而第二个可以包含三个非转义单引号的序列。 (换句话说,因为分隔符不同,所以可以在其中使用的字符略有不同。)

Docstrings 只是普通的字符串,在 Python 中不同的字符串分隔符之间没有区别,除了当然不能在字符串内部使用字符串分隔符。

【讨论】:

您说:“您不能在字符串中使用字符串分隔符”,但我在 python3 中对其进行了测试:foo = """abc"def""" 成功,而 foo 的值为:'abc"def'。同样有趣的是:foo = """abc"'def""" 也是合法的,产生:'abc"\'def' @EricLeschinski:在这种情况下,您的字符串分隔符是"""(即三个双引号),而不是"【参考方案2】:

信息文档PEP 257 -- Docstring Conventions 建议使用"""triple double-quotes""" 以保持一致性,并且所有示例都显示相同:

为了保持一致,请始终使用"""triple double quotes""" 文档字符串。使用 r"""raw triple double quotes""" 如果您使用任何 文档字符串中的反斜杠。对于 Unicode 文档字符串,使用 u"""Unicode triple-quoted strings""".

在实践中使用单引号还是双引号只是一个文体问题。从这些字符串生成和发布文档时,格式没有区别。

【讨论】:

【参考方案3】:

选择你想要的任何风格。我个人在 Python 中使用单引号任何地方

documentation 声明:

"String literals can be enclosed in matching single quotes (') or double quotes (")."

您决定使用哪一个并不重要。重要的是您坚持自己的决定。选择一种风格并坚持下去是个好习惯。

【讨论】:

感谢@Aesthete。但是,对于函数和类的 doc_strings (doc),我特别感兴趣。 @prashu 文档字符串只是 .. 一个字符串。使用"""''' 引号只是约定(可能在某处的PEP 中说明?),通常是为了让生活更轻松或更一致或继承传统......这是可以想象的一些写得不好的代码检查工具需要它(但那些是坏掉的工具)。但是,完全相同的字符串文字规则适用 - 试试吧! A string is a string is a string is a string in Python.

以上是关于带有三重单引号和三重双引号的文档字符串有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

python输出串多行数字空格

Python中的单引号与双引号[关闭]

python里的单引号和双引号有啥区别

单引号和双引号有啥区别?

双引号与单引号有啥区别

sql中单引号跟双引号有啥区别?分别用于啥情况?