В чем разница между nargs='*' и nargs='+'?
nargs='*'
nargs='+'
Поскольку они оба принимают один или несколько аргументов.
parser.add_argument('nums',narg='*')
И
parser.add_argument('nums',narg='+')
argparse соответствует общему использованию в синтаксисе re.цитата из https://docs.python.org/3/library/re.html
argparse
re
* Приводит к тому, что результирующее RE совпадает с 0 или более повторениями предыдущего RE, с максимально возможным числом повторений.ab * будет соответствовать 'a', 'ab' или 'a', за которым следует любое количество 'b. + Приводит к тому, что результирующий RE совпадает с 1 или более повторениями предыдущего RE.ab + будет соответствовать «a», за которым следует любое ненулевое число «b»;это не будет соответствовать просто «а». ?Приводит к тому, что результирующее RE совпадает с 0 или 1 повторениями предыдущего RE.абы?будет соответствовать 'a' или 'ab'.
* Приводит к тому, что результирующее RE совпадает с 0 или более повторениями предыдущего RE, с максимально возможным числом повторений.ab * будет соответствовать 'a', 'ab' или 'a', за которым следует любое количество 'b.
+ Приводит к тому, что результирующий RE совпадает с 1 или более повторениями предыдущего RE.ab + будет соответствовать «a», за которым следует любое ненулевое число «b»;это не будет соответствовать просто «а».
?Приводит к тому, что результирующее RE совпадает с 0 или 1 повторениями предыдущего RE.абы?будет соответствовать 'a' или 'ab'.
https://docs.python.org/3/library/argparse.html#nargs
Вы также можете использовать argparse константы, которые имеют одинаковые строковые значения
argparse.ONE_OR_MORE argparse.ZERO_OR_MORE argparse.OPTIONAL