Python docstring可以由多个字符串文本组成吗?
Python文档字符串是否可以编写为一系列单行字符串文字?例如,代替Python docstring可以由多个字符串文本组成吗?,python,syntax,multiline,string-literals,docstring,Python,Syntax,Multiline,String Literals,Docstring,Python文档字符串是否可以编写为一系列单行字符串文字?例如,代替 def bar(): """My function. That does foo. """ ... 写 def bar(): "My function.\n" "\n" "That does foo.\n" ... 我理解这可能看起来有点奇怪,可读性差得多。我之所以要这样做,是因为我正在实现一个Python代码生成器/漂亮的打印机。docstring的问题在于它们不是一个语法特征,它们是具
def bar():
"""My function.
That does foo.
"""
...
写
def bar():
"My function.\n"
"\n"
"That does foo.\n"
...
我理解这可能看起来有点奇怪,可读性差得多。我之所以要这样做,是因为我正在实现一个Python代码生成器/漂亮的打印机。docstring的问题在于它们不是一个语法特征,它们是具有特殊含义的字符串。我对Python代码的表示是纯语法的,因此我无法区分字符串是否是docstring。因此,我需要一种方法,以不改变内容的方式统一打印所有字符串(例如,多行docstring的确切值取决于缩进)。不,至少在docstring的情况下,它们不会连接在一起
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'
不,至少在docstring的情况下,它们不会被连接
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'
只有第一个字符串将被视为函数的docstring。此外,它必须在def之后,而不是之前
>>> 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'
根据问题中的示例,您可能正在寻找“其他文档字符串”。发件人:
Python代码中其他地方出现的字符串文字也可以用作文档。Python字节码编译器无法识别它们,并且无法作为运行时对象属性访问它们(即,未分配给\uuuuu doc\uuuu
),但软件工具可以提取两种类型的额外docstring:
\uuuu init\uuuu
方法的顶层简单赋值之后立即出现的字符串文本称为“属性docstrings”--Docutils设计规范提供了有关属性和属性的更多信息。只有第一个字符串被视为函数的docstring。此外,它必须在def之后,而不是之前
>>> 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'
根据问题中的示例,您可能正在寻找“其他文档字符串”。发件人:
Python代码中其他地方出现的字符串文字也可以用作文档。Python字节码编译器无法识别它们,并且无法作为运行时对象属性访问它们(即,未分配给\uuuuu doc\uuuu
),但软件工具可以提取两种类型的额外docstring:
\uuuu init\uuuu
方法的顶层简单赋值之后立即出现的字符串文本称为“属性docstrings”--Docutils设计规范提供了有关属性和属性的更多信息。您可以通过获取文档化函数的
\uuuu doc\uuuu
等来自己测试这一点。您编写的不是docstring。Docstrings是方法体中的第一个元素,而不是之前的元素,正如您所示。我认为在我的答案中包含Docstrings不是一件好事,但我已经为您编写了一个Python格式化程序,它可以处理大部分标记化,可能会有所帮助:@PaulMcGuire感谢您提醒我,当然,我会解决这个问题(我更习惯于将文档放在语句之前的语言)。您可以通过获取文档化函数的\uuuu doc\uuuu
等来自己测试这一点。您编写的不是docstring。docstring是方法体中的第一个元素,而不是如您所示的在它之前。我不认为在我的答案中包含它会很好,但我已经编写了一个Python格式化程序来处理这对您来说已经是一个很好的标记化部分,可能会有所帮助:@PaulMcGuire感谢您提醒我,当然,我会解决这个问题(我更习惯于将文档放在语句之前的语言)。