def build_function(name, args=None, defaults=None, doc=None):
args, defaults = args or [], defaults or []<EOL>func = nodes.FunctionDef(name, doc)<EOL>func.args = argsnode = nodes.Arguments()<EOL>argsnode.args = []<EOL>for arg in args:<EOL><INDENT>argsnode.args.append(nodes.Name())<EOL>argsnode.args[-<NUM_LIT:1>].name = arg<EOL>argsnode.args[-<NUM_LIT:1>].parent = argsnode<EOL><DEDENT>argsnode.defaults = []<EOL>for default in defaults:<EOL><INDENT>argsnode.defaults.append(nodes.const_factory(default))<EOL>argsnode.defaults[-<NUM_LIT:1>].parent = argsnode<EOL><DEDENT>argsnode.kwarg = None<EOL>argsnode.vararg = None<EOL>argsnode.parent = func<EOL>if args:<EOL><INDENT>register_arguments(func)<EOL><DEDENT>return func<EOL>
create and initialize an astroid FunctionDef node