human
Complete this python program:
def formatargvalues(args, varargs, varkw, locals, formatarg=str, formatvarargs=(lambda name: ('*' + name)), formatvarkw=(lambda name: ('**' + name)), formatvalue=(lambda value: ('=' + repr(value))), join=joinseq):
assistant
#Here is the Python code you requested.

    """Format an argument spec from the 4 values returned by getargvalues.
    The first four arguments are (args, varargs, varkw, locals).  The
    next four arguments are the corresponding optional formatting functions
    that are called to turn names and values into strings.  The ninth
    argument is an optional function to format the sequence of arguments.
    """
    def convert(name, locals=locals, formatarg=formatarg, formatvalue=formatvalue):
        return (formatarg(name) + formatvalue(locals[name]))
    specs = []
    for i in range(len(args)):
        specs.append(strseq(args[i], convert, join))
    if varargs:
        specs.append((formatvarargs(varargs) + formatvalue(locals[varargs])))
    if varkw:
        specs.append((formatvarkw(varkw) + formatvalue(locals[varkw])))
    return (('(' + string.join(specs, ',    ')) + ')')