Skip to main content
 首页 » 编程设计

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

2025年05月04日26daizhj

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

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