В чем разница между --option и nargs = '?' в модуле argparse Python? - PullRequest
2 голосов
/ 01 июля 2019

Прочитав документацию по argparse, я изо всех сил пытаюсь увидеть разницу между двумя последними строками кода:

parser = argparse.ArgumentParser()
parser.add_argument('--option')
parser.add_argument('option', nargs='?')

Оба указывают необязательные параметры, которые могут быть переданы в синтаксический анализатор, но зачем использовать один над другим?

1 Ответ

0 голосов
/ 01 июля 2019

Любой аргумент, начинающийся с - и --, может использоваться в любом порядке (например, **kwargs), тогда как аргумент без префикса тире известен как позиционный аргумент (например, *args).

Позиционные аргументы должны предоставляться в том порядке, в котором они определены. Хорошим примером использования nargs='?' является предоставление метода перенаправления результатов вашего скрипта в файл. Последний аргумент задается как необязательный файл назначения, если опция не указана, выходные данные просто записываются в stdout .

С точки зрения соглашения, вы можете рассматривать префиксные аргументы как необязательные флаги, тогда как позиционные аргументы требуются.

...