A follow up for issue #15906: change the test for calling the type conversion
on the action's default, reverting it back to previous behavior.  Conversion
is only done on string defaults.

Add a test for this and another test that ensures such type conversions are
only called once.
diff --git a/Lib/argparse.py b/Lib/argparse.py
index 440d8fa..30bae57 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -1948,7 +1948,7 @@
                     # twice (which may fail) if the argument was given, but
                     # only if it was defined already in the namespace
                     if (action.default is not None and
-                            isinstance(action, _StoreAction) and
+                            isinstance(action.default, basestring) and
                             hasattr(namespace, action.dest) and
                             action.default is getattr(namespace, action.dest)):
                         setattr(namespace, action.dest,