diff --git a/Lib/functools.py b/Lib/functools.py
index 90642a5..03bcb1e 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -97,7 +97,7 @@
     """Convert a cmp= function into a key= function"""
     class K(object):
         __slots__ = ['obj']
-        def __init__(self, obj, *args):
+        def __init__(self, obj):
             self.obj = obj
         def __lt__(self, other):
             return mycmp(self.obj, other.obj) < 0
@@ -140,7 +140,7 @@
                 tuple=tuple, sorted=sorted, len=len, KeyError=KeyError):
 
         hits = misses = 0
-        kwd_mark = object()             # separates positional and keyword args
+        kwd_mark = (object(),)          # separates positional and keyword args
         lock = Lock()                   # needed because ordereddicts aren't threadsafe
 
         if maxsize is None:
@@ -151,7 +151,7 @@
                 nonlocal hits, misses
                 key = args
                 if kwds:
-                    key += (kwd_mark,) + tuple(sorted(kwds.items()))
+                    key += kwd_mark + tuple(sorted(kwds.items()))
                 try:
                     result = cache[key]
                     hits += 1
@@ -170,7 +170,7 @@
                 nonlocal hits, misses
                 key = args
                 if kwds:
-                    key += (kwd_mark,) + tuple(sorted(kwds.items()))
+                    key += kwd_mark + tuple(sorted(kwds.items()))
                 try:
                     with lock:
                         result = cache[key]
