human
Here's a good function header given the following:
I wrote the below code

    import gc
    from types import FrameType
    def print_path(path):
        for (i, step) in enumerate(path):
            next = path[((i + 1) % len(path))]
            outstream.write((u'            %s    --    ' % str(type(step))))
            if isinstance(step, dict):
                for (key, val) in six.iteritems(step):
                    if (val is next):
                        outstream.write((u'[%s]' % repr(key)))
                        break
                    if (key is next):
                        outstream.write((u'[key]    =    %s' % repr(val)))
                        break
            elif isinstance(step, list):
                outstream.write((u'[%d]' % step.index(next)))
            elif isinstance(step, tuple):
                outstream.write(u'(    tuple    )')
            else:
                outstream.write(repr(step))
            outstream.write(u'    ->\n')
        outstream.write(u'\n')
    def recurse(obj, start, all, current_path):
        if show_progress:
            outstream.write((u'%d\r' % len(all)))
        all[id(obj)] = None
        referents = gc.get_referents(obj)
        for referent in referents:
            if (referent is start):
                print_path(current_path)
            elif ((referent is objects) or isinstance(referent, FrameType)):
                continue
            elif (id(referent) not in all):
                recurse(referent, start, all, (current_path + [obj]))
    for obj in objects:
        outstream.write((u'Examining:    %r\n' % (obj,)))
        recurse(obj, obj, {}, [])

What's a good function header?
assistant
#Here's a good function header.

def print_cycles(objects, outstream=sys.stdout, show_progress=False):