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

    if isinstance(field_names, basestring):
        field_names = field_names.replace(',', '    ').split()
    field_names = tuple(map(str, field_names))
    for name in ((typename,) + field_names):
        if (not all(((c.isalnum() or (c == '_')) for c in name))):
            raise ValueError(('Type    names    and    field    names    can    only    contain    alphanumeric    characters    and    underscores:    %r' % name))
        if _iskeyword(name):
            raise ValueError(('Type    names    and    field    names    cannot    be    a    keyword:    %r' % name))
        if name[0].isdigit():
            raise ValueError(('Type    names    and    field    names    cannot    start    with    a    number:    %r' % name))
    seen_names = set()
    for name in field_names:
        if name.startswith('_'):
            raise ValueError(('Field    names    cannot    start    with    an    underscore:    %r' % name))
        if (name in seen_names):
            raise ValueError(('Encountered    duplicate    field    name:    %r' % name))
        seen_names.add(name)
    numfields = len(field_names)
    argtxt = repr(field_names).replace("'", '')[1:(-1)]
    reprtxt = ',    '.join((('%s=%%r' % name) for name in field_names))
    dicttxt = ',    '.join((('%r:    t[%d]' % (name, pos)) for (pos, name) in enumerate(field_names)))
    template = ("class    %(typename)s(tuple):\n                                '%(typename)s(%(argtxt)s)'    \n\n                                __slots__    =    ()    \n\n                                _fields    =    %(field_names)r    \n\n                                def    __new__(_cls,    %(argtxt)s):\n                                                return    _tuple.__new__(_cls,    (%(argtxt)s))    \n\n                                @classmethod\n                                def    _make(cls,    iterable,    new=tuple.__new__,    len=len):\n                                                'Make    a    new    %(typename)s    object    from    a    sequence    or   ...

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

def namedtuple(typename, field_names):