sas*_*llo 1 python docstring python-2.7
比方说,我有一个这样的函数:
def myFunc():
# useful function to calculate stuff
Run Code Online (Sandbox Code Playgroud)
这将产生缩进错误,除非我添加pass:
def myFunc():
# useful function to calculate stuff
pass
Run Code Online (Sandbox Code Playgroud)
但是,如果我用docstring替换注释,pass则不需要:
def myFunc():
"""useful function to calculate stuff"""
Run Code Online (Sandbox Code Playgroud)
这看起来像一个奇怪的特征,因为据我所知,这些都没有在程序中使用.那么,为什么它会像这样呢?
解释器完全忽略注释,因此在缩进后省略块是语法错误.但是,docstring是一个真正的Python对象 - 最基本的是文字str.单独的表达式是有效的代码块:
'This is a string. It is a valid (though pretty useless) line of Python code.'
Run Code Online (Sandbox Code Playgroud)
特别是在docstrings的情况下,还有一些附加功能,例如用于设置__doc__属性.
>>> def myFunc():
... '''MyDocString'''
...
>>> print(myFunc.__doc__)
MyDocString
Run Code Online (Sandbox Code Playgroud)
请注意,这也适用于类:
>>> class MyClass(object):
... '''MyClassDocString'''
...
>>> print(MyClass.__doc__)
MyClassDocString
Run Code Online (Sandbox Code Playgroud)
文档字符串是不是只是一个评论.它实际上对翻译有意义.在使用docstring的情况下,您可以执行myFunc.__doc__并实际获取文档字符串(在另一种情况下使用a pass,结果myFunc.__doc__将是None).
换句话说,您实际上是在函数体中添加了一些代码来修改它的行为(在某些情况下),所以没有pass必要.