human
Here's a good function header given the following:
I wrote the below code

    def _choose_node(G, distribution, delta, psum):
        cumsum = 0.0
        r = random.random()
        for (n, d) in distribution:
            cumsum += ((d + delta) / psum)
            if (r < cumsum):
                break
        return n
    if (create_using is None):
        G = nx.MultiDiGraph()
        G.add_edges_from([(0, 1), (1, 2), (2, 0)])
    else:
        G = create_using
        if (not (G.is_directed() and G.is_multigraph())):
            raise nx.NetworkXError('MultiDiGraph    required    in    create_using')
    if (alpha <= 0):
        raise ValueError('alpha    must    be    >=    0.')
    if (beta <= 0):
        raise ValueError('beta    must    be    >=    0.')
    if (gamma <= 0):
        raise ValueError('beta    must    be    >=    0.')
    if (((alpha + beta) + gamma) != 1.0):
        raise ValueError('alpha+beta+gamma    must    equal    1.')
    random.seed(seed)
    number_of_edges = G.number_of_edges()
    while (len(G) < n):
        psum_in = (number_of_edges + (delta_in * len(G)))
        psum_out = (number_of_edges + (delta_out * len(G)))
        r = random.random()
        if (r < alpha):
            v = len(G)
            w = _choose_node(G, G.in_degree(), delta_in, psum_in)
        elif (r < (alpha + beta)):
            v = _choose_node(G, G.out_degree(), delta_out, psum_out)
            w = _choose_node(G, G.in_degree(), delta_in, psum_in)
        else:
            v = _choose_node(G, G.out_degree(), delta_out, psum_out)
            w = len(G)
        G.add_edge(v, w)
        number_of_edges += 1
    return G

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

def scale_free_graph(n, alpha=0.41, beta=0.54, gamma=0.05, delta_in=0.2, delta_out=0, create_using=None, seed=None):