mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
bpo-9182: Add a section on specifying positional arguments (#31810)
This commit is contained in:
parent
57da3ff586
commit
3e3e8976b8
2 changed files with 34 additions and 2 deletions
|
@ -664,6 +664,35 @@ Output:
|
|||
4^2 == 16
|
||||
|
||||
|
||||
.. _specifying-ambiguous-arguments:
|
||||
|
||||
Specifying ambiguous arguments
|
||||
------------------------------
|
||||
|
||||
When there is ambiguity in deciding whether an argument is positional or for an
|
||||
argument, ``--`` can be used to tell :meth:`~ArgumentParser.parse_args` that
|
||||
everything after that is a positional argument::
|
||||
|
||||
>>> parser = argparse.ArgumentParser(prog='PROG')
|
||||
>>> parser.add_argument('-n', nargs='+')
|
||||
>>> parser.add_argument('args', nargs='*')
|
||||
|
||||
>>> # ambiguous, so parse_args assumes it's an option
|
||||
>>> parser.parse_args(['-f'])
|
||||
usage: PROG [-h] [-n N [N ...]] [args ...]
|
||||
PROG: error: unrecognized arguments: -f
|
||||
|
||||
>>> parser.parse_args(['--', '-f'])
|
||||
Namespace(args=['-f'], n=None)
|
||||
|
||||
>>> # ambiguous, so the -n option greedily accepts arguments
|
||||
>>> parser.parse_args(['-n', '1', '2', '3'])
|
||||
Namespace(args=[], n=['1', '2', '3'])
|
||||
|
||||
>>> parser.parse_args(['-n', '1', '--', '2', '3'])
|
||||
Namespace(args=['2', '3'], n=['1'])
|
||||
|
||||
|
||||
Conflicting options
|
||||
-------------------
|
||||
|
||||
|
|
|
@ -951,8 +951,8 @@ nargs
|
|||
|
||||
ArgumentParser objects usually associate a single command-line argument with a
|
||||
single action to be taken. The ``nargs`` keyword argument associates a
|
||||
different number of command-line arguments with a single action. The supported
|
||||
values are:
|
||||
different number of command-line arguments with a single action.
|
||||
See also :ref:`specifying-ambiguous-arguments`. The supported values are:
|
||||
|
||||
* ``N`` (an integer). ``N`` arguments from the command line will be gathered
|
||||
together into a list. For example::
|
||||
|
@ -1610,6 +1610,9 @@ argument::
|
|||
>>> parser.parse_args(['--', '-f'])
|
||||
Namespace(foo='-f', one=None)
|
||||
|
||||
See also :ref:`the argparse howto on ambiguous arguments <specifying-ambiguous-arguments>`
|
||||
for more details.
|
||||
|
||||
.. _prefix-matching:
|
||||
|
||||
Argument abbreviations (prefix matching)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue