input: Write a python function to create a decorator that prints the name of the function being called and its arguments.
  assert decorated_function(5, 10) == 15
  assert another_decorated_function('Hello', 'World') == 'Hello World'
  assert sum_numbers(1, 2, 3) == 6
output: def print_function_details(func):
      def wrapper(*args, **kwargs):
          print(f"Function {func.__name__} called with arguments {args} and keyword arguments {kwargs}")
          return func(*args, **kwargs)
      return wrapper
  
  @print_function_details
  def decorated_function(a, b):
      return a + b
  
  @print_function_details
  def another_decorated_function(a, b):
      return f"{a} {b}"
  
  @print_function_details
  def sum_numbers(*args):
      return sum(args)