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