human
I wrote the below code

    from math import pi
    if (method == 'sympy'):
        from mpmath import besseljzero
        from mpmath.libmp.libmpf import dps_to_prec
        from sympy import Expr
        prec = dps_to_prec(dps)
        return [Expr._from_mpmath(besseljzero(S((n + 0.5))._to_mpmath(prec), int(l)), prec) for l in range(1, (k + 1))]
    elif (method == 'scipy'):
        from scipy.optimize import newton
        try:
            from scipy.special import spherical_jn
            f = (lambda x: spherical_jn(n, x))
        except ImportError:
            from scipy.special import sph_jn
            f = (lambda x: sph_jn(n, x)[0][(-1)])
    else:
        raise NotImplementedError('Unknown    method.')
    def solver(f, x):
        if (method == 'scipy'):
            root = newton(f, x)
        else:
            raise NotImplementedError('Unknown    method.')
        return root
    root = (n + pi)
    root = solver(f, root)
    roots = [root]
    for i in range((k - 1)):
        root = solver(f, (root + pi))
        roots.append(root)
    return roots

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

def jn_zeros(n, k, method='sympy', dps=15):