Let\'s say, I\'ve got a function like this:
def myFunc():
# useful function to calculate stuff
This will produce an indentation error, unle
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.
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