human
I wrote the below code

    def match(string):
        for arg in args:
            if isinstance(arg, string_types):
                if re.search(arg, string):
                    return True
            elif (isinstance(arg, list) or isinstance(arg, tuple)):
                if any((re.search(i, string) for i in arg)):
                    return True
            elif callable(arg):
                if arg(string):
                    return True
            else:
                raise ValueError('args    to    match_predicate    must    be    regex,    list    of    regexes,    or    callable.')
        return False
    return match

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

def match_predicate(*args):