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

    if (depth == 0):
        return
    if (order is None):
        order = []
    if (done is None):
        done = dict()
    if (scan_ops is None):
        scan_ops = []
    if print_type:
        type_str = ('    <%s>' % r.type)
    else:
        type_str = ''
    if (prefix_child is None):
        prefix_child = prefix
    if (used_ids is None):
        used_ids = dict()
    def get_id_str(obj, get_printed=True):
        if (obj in used_ids):
            id_str = used_ids[obj]
        elif (obj == 'output'):
            id_str = 'output'
        elif (ids == 'id'):
            id_str = ('[id    %s]' % str(id(r)))
        elif (ids == 'int'):
            id_str = ('[id    %s]' % str(len(used_ids)))
        elif (ids == 'CHAR'):
            id_str = ('[id    %s]' % char_from_number(len(used_ids)))
        elif (ids == ''):
            id_str = ''
        if get_printed:
            done[obj] = id_str
        used_ids[obj] = id_str
        return id_str
    if hasattr(r.owner, 'op'):
        a = r.owner
        r_name = getattr(r, 'name', '')
        if (r_name is None):
            r_name = ''
        if print_destroy_map:
            destroy_map_str = str(getattr(r.owner.op, 'destroy_map', ''))
        else:
            destroy_map_str = ''
        if print_view_map:
            view_map_str = str(getattr(r.owner.op, 'view_map', ''))
        else:
            view_map_str = ''
        if (destroy_map_str and (destroy_map_str != '{}')):
            destroy_map_str = ('d=' + destroy_map_str)
        if (view_map_str and (view_map_str != '{}')):
            view_map_str = ('v=' + view_map_str)
        o = ''
        if order:
            o = str(order.index(r.owner))
        already_printed = (a in done)
        id_str = get_id_str(a)
        if (len(a.outputs) == 1):
            idx = ''
        else:
            idx = ('.%i' % a.outputs.index(r))
        data = ''
        if smap:
            data = ('    ' + str(smap.get(a.outputs[0], '')))
        clients = ''
        if (print_clients and...

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

def debugprint(r, prefix='', depth=(-1), done=None, print_type=False, file=sys.stdout, print_destroy_map=False, print_view_map=False, order=None, ids='CHAR', stop_on_name=False, prefix_child=None, scan_ops=None, profile=None, scan_inner_to_outer_inputs=None, smap=None, used_ids=None, print_clients=False):