human
I wrote the below code

    hashfunc = (hashfunc or hashlib.sha1)
    mac = hmac.new(data, None, hashfunc)
    def _pseudorandom(x, mac=mac):
        h = mac.copy()
        h.update(x)
        return map(ord, h.digest())
    buf = []
    for block in xrange(1, ((- ((- keylen) // mac.digest_size)) + 1)):
        rv = u = _pseudorandom((salt + _pack_int(block)))
        for i in xrange((iterations - 1)):
            u = _pseudorandom(''.join(map(chr, u)))
            rv = list(starmap(xor, izip(rv, u)))
        buf.extend(rv)
    return ''.join(map(chr, buf))[:keylen]

What's a good function header?

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

def pbkdf2_bin(data, salt, iterations=1000, keylen=24, hashfunc=None):