diff --git a/Doc/library/sched.rst b/Doc/library/sched.rst
index f6bd43f..e73ba40 100644
--- a/Doc/library/sched.rst
+++ b/Doc/library/sched.rst
@@ -36,19 +36,22 @@
 
    >>> import sched, time
    >>> s = sched.scheduler(time.time, time.sleep)
-   >>> def print_time(): print("From print_time", time.time())
+   >>> def print_time(a='default'):
+   ...     print("From print_time", time.time(), a)
    ...
    >>> def print_some_times():
    ...     print(time.time())
-   ...     s.enter(5, 1, print_time, ())
-   ...     s.enter(10, 1, print_time, ())
+   ...     s.enter(10, 1, print_time)
+   ...     s.enter(5, 2, print_time, argument=('positional',))
+   ...     s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
    ...     s.run()
    ...     print(time.time())
    ...
    >>> print_some_times()
    930343690.257
-   From print_time 930343695.274
-   From print_time 930343700.273
+   From print_time 930343695.274 positional
+   From print_time 930343695.275 keyword
+   From print_time 930343700.273 default
    930343700.276
 
 .. _scheduler-objects:
@@ -59,7 +62,7 @@
 :class:`scheduler` instances have the following methods and attributes:
 
 
-.. method:: scheduler.enterabs(time, priority, action, argument=[], kwargs={})
+.. method:: scheduler.enterabs(time, priority, action, argument=(), kwargs={})
 
    Schedule a new event. The *time* argument should be a numeric type compatible
    with the return value of the *timefunc* function passed  to the constructor.
@@ -67,8 +70,10 @@
    *priority*.
 
    Executing the event means executing ``action(*argument, **kwargs)``.
-   *argument* must be a sequence holding the parameters for *action*.
-   *kwargs* must be a dictionary holding the keyword parameters for *action*.
+   Optional *argument* argument must be a sequence holding the parameters
+   for *action* if any used.
+   Optional *kwargs* argument must be a dictionary holding the keyword
+   parameters for *action* if any used.
 
    Return value is an event which may be used for later cancellation of the event
    (see :meth:`cancel`).
@@ -80,7 +85,7 @@
       *kwargs* parameter was added.
 
 
-.. method:: scheduler.enter(delay, priority, action, argument=[], kwargs={})
+.. method:: scheduler.enter(delay, priority, action, argument=(), kwargs={})
 
    Schedule an event for *delay* more time units. Other than the relative time, the
    other arguments, the effect and the return value are the same as those for
diff --git a/Lib/sched.py b/Lib/sched.py
index e523bc1..4b1f7ac 100644
--- a/Lib/sched.py
+++ b/Lib/sched.py
@@ -50,6 +50,8 @@
     def __gt__(s, o): return (s.time, s.priority) >  (o.time, o.priority)
     def __ge__(s, o): return (s.time, s.priority) >= (o.time, o.priority)
 
+_sentinel = object()
+
 class scheduler:
 
     def __init__(self, timefunc=_time, delayfunc=time.sleep):
@@ -60,19 +62,21 @@
         self.timefunc = timefunc
         self.delayfunc = delayfunc
 
-    def enterabs(self, time, priority, action, argument=[], kwargs={}):
+    def enterabs(self, time, priority, action, argument=(), kwargs=_sentinel):
         """Enter a new event in the queue at an absolute time.
 
         Returns an ID for the event which can be used to remove it,
         if necessary.
 
         """
+        if kwargs is _sentinel:
+            kwargs = {}
         with self._lock:
             event = Event(time, priority, action, argument, kwargs)
             heapq.heappush(self._queue, event)
             return event # The ID
 
-    def enter(self, delay, priority, action, argument=[], kwargs={}):
+    def enter(self, delay, priority, action, argument=(), kwargs=_sentinel):
         """A variant that specifies the time as a relative time.
 
         This is actually the more commonly used interface.
diff --git a/Misc/NEWS b/Misc/NEWS
index ce906a0..3317f68 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -124,6 +124,9 @@
 Library
 -------
 
+- Issue #16641: Fix default values of sched.scheduler.enter arguments were
+  modifiable.
+
 - Issue #16504: IDLE now catches SyntaxErrors raised by tokenizer. Patch by
   Roger Serwy.
 
