Why python docstring is interpreted differently from comment

前端 未结 2 1979
北海茫月
北海茫月 2021-01-23 16:56

Let\'s say, I\'ve got a function like this:

def myFunc():
    # useful function to calculate stuff

This will produce an indentation error, unle

相关标签:
2条回答
  • 2021-01-23 17:12

    A docstring isn't just a comment. It actually has meaning to the interpreter. In the case with a docstring, you could do myFunc.__doc__ and actually get your docstring back (In the other case with a pass, the result myFunc.__doc__ would be None).

    In other words, you are actually adding some code to the function body to modify it's behavior (in some circumstances), so no pass is necessary.

    0 讨论(0)
  • 2021-01-23 17:13

    A comment is outright ignored by the interpreter, so omitting a block after an indent is a syntax error. However, a docstring is a real Python object--at its most basic, a literal str. A lone expression is a valid block of code:

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

    In the case of docstrings in particular, there's also some additional functionality going on, such as being used to set the __doc__ attribute.

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

    Note that this also works for classes:

    >>> class MyClass(object):
    ...     '''MyClassDocString'''
    ...
    >>> print(MyClass.__doc__)
    MyClassDocString
    
    0 讨论(0)
提交回复
热议问题