parameters: (self, *args)
return_statement: return self.memo[args]
docstring: Checks if memo dict already has args.
          If it is not available, call function and store args/return values,
          otherwise return the function return values directly.
  
          Args:
              *str: Function arguements.
  
          Returns:
              TYPE: Function return values.
docstring_summary: Checks if memo dict already has args.
          If it is not available, call function and store args/return values,
          otherwise return the function return values directly.
docstring_tokens: Checks if memo dict already has args . If it is not available call function and store args / return values otherwise return the function return values directly .
function: def __call__(self, *args):
          """Checks if memo dict already has args.
          If it is not available, call function and store args/return values,
          otherwise return the function return values directly.
  
          Args:
              *str: Function arguements.
  
          Returns:
              TYPE: Function return values.
          """
          if args not in self.memo:
              self.memo[args] = self.fn(*args)
          return self.memo[args]
function_tokens: def __call__ ( self , * args ) : if args not in self . memo : self . memo [ args ] = self . fn ( * args ) return self . memo [ args ]