Python docstring可以写成一系列单行字符串文字吗?例如,而不是
def bar():
"""My function.
That does foo.
"""
...
写
def bar():
"My function.\n"
"\n"
"That does foo.\n"
...
我知道这可能看起来有点奇怪而且可读性差得多。我想这样做的原因是我正在实现一个Python代码生成器/漂亮的打印机。文档字符串的问题在于它们不是语法特征,它们是具有特殊含义的字符串。我对Python代码的表示纯粹是语法,因此我无法区分字符串是否是文档字符串。因此,我需要一种方法,如何以不改变其内容的方式统一打印所有字符串(例如,多行文档字符串的确切值取决于缩进)。
答案 0 :(得分:3)
只有第一个字符串才会被视为该函数的docstring。此外,它必须在之后来,而不是之前。
>>> def bar():
... """My function.
...
... That does foo.
... """
... pass
...
>>> bar.__doc__
'My function.\n \n That does foo.\n '
>>>
>>>
>>> def bar():
... "My function.\n"
... "\n"
... "That does foo.\n"
... pass
...
>>> bar.__doc__
'My function.\n'
根据您问题中的示例,您可能正在寻找" 其他文档字符串"。来自PEP 257:
Python代码中其他地方出现的字符串文字也可以作为文档。它们不能被Python字节码编译器识别,并且不能作为运行时对象属性访问(即未分配给
__doc__
),但软件工具可以提取两种类型的额外文档字符串:< / p>
- 在模块,类或
__init__
方法的顶层进行简单赋值后立即出现的字符串文字被称为&#34;属性docstrings&#34;。- 字符串文字在另一个docstring 之后立即发生&#34;其他文档字符串&#34;。
醇>
PEP 258 - Docutils设计规范提供了有关属性和additional docstrings的更多信息。
答案 1 :(得分:2)
不,至少在文档字符串的情况下它们不会被连接起来
In [1]: def a():
...: 'some '
...: 'text '
...: 'here '
...: pass
...:
In [2]: def b():
...: '''some
...: text
...: here
...: '''
...: pass
...:
In [3]: a.__doc__
Out[3]: 'some '
In [4]: b.__doc__
Out[4]: 'some\n text\n here\n '
这是可以理解的,因为这两个也是完全不同的陈述:
a = '''
some
text
'''
b = 'some'
'text'