python - 为什么 python 文档字符串的解释与注释不同

标签 python python-2.7 docstring

比方说,我有这样一个函数:

def myFunc():
    # useful function to calculate stuff

这会产生缩进错误,除非我添加pass:

def myFunc():
    # useful function to calculate stuff
    pass

但是,如果我用文档字符串替换注释,则不需要 pass:

def myFunc():
    """useful function to calculate stuff"""

这似乎是一个奇怪的功能,因为据我所知,程序中都没有使用这些功能。那么,为什么它会这样呢?

最佳答案

解释器会完全忽略注释,因此在缩进后省略 block 是语法错误。然而,文档字符串是一个真正的 Python 对象——最基本的是一个文字 str。一个单独的表达式是一个有效的代码块:

'This is a string. It is a valid (though pretty useless) line of Python code.'

特别是在文档字符串的情况下,还有一些额外的功能正在进行,例如用于设置 __doc__ 属性。

>>> def myFunc():
...     '''MyDocString'''
...
>>> print(myFunc.__doc__)
MyDocString

请注意,这也适用于类:

>>> class MyClass(object):
...     '''MyClassDocString'''
...
>>> print(MyClass.__doc__)
MyClassDocString

关于python - 为什么 python 文档字符串的解释与注释不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21245572/

相关文章:

python - 在 python 中调用存储过程时出错 - 使用 MySQLdb

python - 是否有任何 pythonic 方法来组合两个字典(为公共(public)值制作一个列表)?

python - 继承父类文档字符串作为 __doc__ 属性

python - 自定义 PyCharm 文档字符串 stub (即用于 google 文档字符串或 numpydoc 格式)

python - 查看文件夹内部

python - 文档字符串与评论

python - OpenCV 在轮廓旋转后将不规则轮廓区域复制到另一幅图像

python - 查找整数的线性组合

python - 如何确定更快的 RCNN (PyTorch) 的验证损失?

python - 关于从 PyCharm 安装 SciPy