On 4/17/2017 5:31 AM, Steve D'Aprano wrote:
If you're not using the help() command in the interactive interpreter,
you're missing out on a lot.

I recently discovered that help() is even cleverer than I knew. I knew it
picked up on objects' doc strings, but what happens if the object doesn't
have a doc string?

Let's find out!

Here's a tiny module with a couple of toy functions. Save this
as "module.py":

# --- cut here ✂ ----

def greet(name='world'):
    """Hello world, with optional name."""
    print ("Hello, %s" % name)

# The insult() function insults the caller.
# Pass the number of insults to use, and an optional name.
def insult(number, name=None):
    if name is None or name == '':
        name = 'Anonymous Coward'
    print(name)
    for i in range(number):
        if i%2 == 0:
            print("Your mother smells of elderberries!")
        else:
            print("And your father was a hamster!")

def goodbye():
    # Say goodbye.
    print("Goodbye cruel world!")

# --- ✂ ---


Now start up the interactive interpreter and import the module:

py> import module
py> help(module)


and you should see something like this:


Help on module module:

NAME
    module

FUNCTIONS
    goodbye()

    greet(name='world')
        Hello world, with optional name.

    insult(number, name=None)
        # The insult() function insults the caller.
        # Pass the number of insults to use, and an optional name.

When I ran the module instead of importing it, help(insult) printed the same. The pydoc function wrapped by help must be going back to the source, as I believe that comments are left behind when the source is compiled. I did not know this either. A comment before the def must have once been standard.

FILE
    /home/steve/module.py



Not only does it pick up the docstring for greet(), but it picks up the
comment just prior to the function definition of insult(). Alas, as of
Python 3.5 it doesn't recognise the comments in the goodbye() function --
perhaps because they're conceptually part of the implementation, not the
interface.


--
Terry Jan Reedy


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to