human
Give me a Python program to print args given the following:
I wrote the below code

    if ((config is None) and (state is None)):
        raise ValueError('lbfgs    requires    a    dictionary    to    retain    state    between    iterations')
    state = (state if (state is not None) else config)
    maxIter = config.get('maxIter', 20)
    maxEval = config.get('maxEval', (maxIter * 1.25))
    tolFun = config.get('tolFun', 1e-05)
    tolX = config.get('tolX', 1e-09)
    nCorrection = config.get('nCorrection', 100)
    lineSearch = config.get('lineSearch')
    lineSearchOptions = config.get('lineSearchOptions')
    learningRate = config.get('learningRate', 1)
    isverbose = config.get('verbose', False)
    state.setdefault('funcEval', 0)
    state.setdefault('nIter', 0)
    if isverbose:
        def verbose(*args):
            args = (('<optim.lbfgs>',) + args)
            print args
    else:
        def verbose(*args):
            pass
    (f, g) = opfunc(x)
    f_hist = [f]
    currentFuncEval = 1
    state['funcEval'] += 1
    p = g.size(0)
    if ('tmp1' not in state):
        state['tmp1'] = g.new(g.size()).zero_()
    tmp1 = state['tmp1']
    tmp1.copy_(g).abs_()
    if (tmp1.sum() <= tolFun):
        verbose('optimality    condition    below    tolFun')
        return (x, f_hist)
    if ('dir_bufs' not in state):
        verbose('creating    recyclable    direction/step/history    buffers')
        state['dir_bufs'] = list(g.new((nCorrection + 1), p).split(1))
        state['stp_bufs'] = list(g.new((nCorrection + 1), p).split(1))
        for i in range(len(state['dir_bufs'])):
            state['dir_bufs'][i] = state['dir_bufs'][i].squeeze(0)
            state['stp_bufs'][i] = state['stp_bufs'][i].squeeze(0)
    d = state.get('d')
    t = state.get('t')
    old_dirs = state.get('old_dirs')
    old_stps = state.get('old_stps')
    Hdiag = state.get('Hdiag')
    g_old = state.get('g_old')
    f_old = state.get('f_old')
    nIter = 0
    while (nIter < maxIter):
        nIter += 1
        state['nIter'] += 1
        if (state['nIter'] == 1):
            d = g.neg()
           ...

What's a good function header?
assistant
#Here is Python program to print args
.

def lbfgs(opfunc, x, config, state=None):