code: def tuple_args(fn):
      
  
      @wraps(fn)
      def wrapped(*args, **kwargs):
  
          if len(args) == 1:
              if isinstance(args[0], tuple):
                  return fn(args[0], **kwargs)
              elif isinstance(args[0], list):
                  return fn(tuple(args[0]), **kwargs)
          return fn(args, **kwargs)
  
      return wrapped
docs: args 파싱 유틸 function
      fun(p1, p2, ...pn, **kwargs) or fun([p1, p2, ..], **kwargs)
      ex) 샘플::
  
          @tuple_arg
          def f(args, **kwargs):
              for d in args:
                  print d
          f(1,2,3) =>  f([1,2,3])
      :param function fn:
      :return: