I discovered the built-in help() recently that prints some information for a module, function, method, class, etc. But where exactly does it find the information it shows? Python docs don't give a single hint about this.
>>> import base64
>>> help(base64)
Help on module base64:
NAME
base64 - RFC 3548: Base16, Base32, Base64 Data Encodings
FILE
/usr/lib/python2.7/base64.py
..
If you simply do, help(help), you will get
Help on _Helper in module site object:
class _Helper(__builtin__.object)
| Define the builtin 'help'.
| This is a wrapper around pydoc.help (with a twist).
|
| Methods defined here:
|
| __call__(self, *args, **kwds)
|
| __repr__(self)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
basically, help gets its input from pydoc.help. Quoting, pydoc documentation,
For modules, classes, functions and methods, the displayed documentation is derived from the docstring (i.e. the
__doc__attribute) of the object, and recursively of its documentable members. If there is no docstring,pydoctries to obtain a description from the block of comment lines just above the definition of the class, function or method in the source file, or at the top of the module (seeinspect.getcomments()).The built-in function
help()invokes the online help system in the interactive interpreter, which usespydocto generate its documentation as text on the console.
But where exactly does it find the information it shows?
The quoted bold text above answers this question.
It is in site.py, if you use help.__class__ you will see it is site._Helper which is just a wrapper around pydoc.help :
In [1]: help.__class__
Out[1]: site._Helper
_Helper class from site.py:
class _Helper(object):
"""Define the builtin 'help'.
This is a wrapper around pydoc.help (with a twist).
"""
def __repr__(self):
return "Type help() for interactive help, " \
"or help(object) for help about object."
def __call__(self, *args, **kwds):
import pydoc
return pydoc.help(*args, **kwds)
def sethelper():
__builtin__.help = _Helper()
help(object) is equivalent to __builtin__.help(object) which passes the object to pydoc.help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With