diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index bc8986b..6e7885e 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -291,9 +291,8 @@
    iterables are of uneven length, missing values are filled-in with *fillvalue*.
    Iteration continues until the longest iterable is exhausted.  Equivalent to::
 
-      def zip_longest(*args, **kwds):
+      def zip_longest(*args, fillvalue=None):
           # zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D-
-          fillvalue = kwds.get('fillvalue')
           def sentinel(counter = ([fillvalue]*(len(args)-1)).pop):
               yield counter()         # yields the fillvalue, or raises IndexError
           fillers = repeat(fillvalue)
@@ -384,10 +383,10 @@
    This function is equivalent to the following code, except that the
    actual implementation does not build up intermediate results in memory::
 
-       def product(*args, **kwds):
+       def product(*args, repeat=1):
            # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
            # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
-           pools = map(tuple, args) * kwds.get('repeat', 1)
+           pools = map(tuple, args) * repeat
            result = [[]]
            for pool in pools:
                result = [x+[y] for x in result for y in pool]
@@ -596,8 +595,7 @@
    def grouper(n, iterable, fillvalue=None):
        "grouper(3, 'abcdefg', 'x') --> ('a','b','c'), ('d','e','f'), ('g','x','x')"
        args = [iter(iterable)] * n
-       kwds = dict(fillvalue=fillvalue)
-       return zip_longest(*args, **kwds)
+       return zip_longest(*args, fillvalue=fillvalue)
 
    def roundrobin(*iterables):
        "roundrobin('abc', 'd', 'ef') --> 'a', 'd', 'e', 'b', 'f', 'c'"
