From 752cdf21eb2be0a26ea6a34a0de33a458459aead Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 6 Dec 2020 18:29:08 -0800 Subject: [PATCH] bpo-38843: Document behavior of default when the attribute is already set (GH-23653) --- Doc/library/argparse.rst | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index a32b99901a7..02cd70f4f71 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -696,7 +696,7 @@ The add_argument() method * const_ - A constant value required by some action_ and nargs_ selections. * default_ - The value produced if the argument is absent from the - command line. + command line and if it is absent from the namespace object. * type_ - The type to which the command-line argument should be converted. @@ -1006,6 +1006,14 @@ was not present at the command line:: >>> parser.parse_args([]) Namespace(foo=42) +If the target namespace already has an attribute set, the action *default* +will not over write it:: + + >>> parser = argparse.ArgumentParser() + >>> parser.add_argument('--foo', default=42) + >>> parser.parse_args([], namespace=argparse.Namespace(foo=101)) + Namespace(foo=101) + If the ``default`` value is a string, the parser parses the value as if it were a command-line argument. In particular, the parser applies any type_ conversion argument, if provided, before setting the attribute on the