human
I wrote the below code

    if (not isinstance(qstr, basestring)):
        raise TypeError('parse_qs    requires    a    basestring    as    input.')
    qs = QueryString(encoding=encoding)
    if qstr:
        if isinstance(qstr, unicode):
            qstr = qstr.encode(encoding, 'ignore')
        try:
            odict = OrderedDict()
            for (name, value) in parse_qsl(qstr, keep_blank_values=True, strict_parsing=False):
                if (name in odict):
                    odict[name].append(value)
                else:
                    odict[name] = [value]
        except Exception:
            if (not ignore_exc):
                raise BaseFrameworkException(('Error    while    parsing    "%r"' % qstr))
        else:
            def decode(item):
                return (item[0].decode(encoding, 'ignore'), [e.decode(encoding, 'ignore') for e in item[1]])
            qs.update((decode(item) for item in odict.items()))
    return qs

What's a good function header?

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

def parse_qs(qstr, ignore_exc=True, encoding=DEFAULT_ENCODING):