code: def compile_func(ast_node, filename, globals, **defaults):
      '''
      Compile a function from an ast.FunctionDef instance.
      
      :param ast_node: ast.FunctionDef instance
      :param filename: path where function source can be found. 
      :param globals: will be used as func_globals
      
      :return: A python function object
      '''
  
      function_name = ast_node.name
      module = _ast.Module(body=[ast_node])
  
      ctx = {'%s_default' % key : arg for key, arg in defaults.items()}
  
      code = compile(module, filename, 'exec')
  
      eval(code, globals, ctx)
  
      function = ctx[function_name]
  
      return functiof compile_func(ast_node, filename, globals, **defaults):
      '''
      Compile a function from an ast.FunctionDef instance.
      
      :param ast_node: ast.FunctionDef instance
      :param filename: path where function source can be found. 
      :param globals: will be used as func_globals
      
      :return: A python function object
      '''
  
      function_name = ast_node.name
      module = _ast.Module(body=[ast_node])
  
      ctx = {'%s_default' % key : arg for key, arg in defaults.items()}
  
      code = compile(module, filename, 'exec')
  
      eval(code, globals, ctx)
  
      function = ctx[function_name]
  
      return function
docs: Compile a function from an ast.FunctionDef instance.
      
      :param ast_node: ast.FunctionDef instance
      :param filename: path where function source can be found. 
      :param globals: will be used as func_globals
      
      :return: A python function object