私は
In [32]: parser = argparse.ArgumentParser()
は3つのアクションの定義(Ipythonインタラクティブセッションで)にdefault
の正常な動作を示します:
In [33]: parser.add_argument('-r', nargs=3, type=int, default=(1,2,3));
In [35]: parser.add_argument('-f', default='DEFAULT');
In [37]: parser.add_argument('-g', nargs='?', default='DEFAULT', const='const');
help
を。
In [39]: parser.print_help()
usage: ipython3 [-h] [-r R R R] [-f F] [-g [G]]
optional arguments:
-h, --help show this help message and exit
-r R R R
-f F
-g [G]
いかなるargmentsなしで呼び出された場合は、デフォルト値のすべてがargs
名前空間に表示されます。すべてのアクションは[]、彼らはオプションであることを示していることに注意してください。 (NARGSによって指定されるように)
In [40]: parser.parse_args([]) # e.g python myprog.py
Out[40]: Namespace(f='DEFAULT', g='DEFAULT', r=(1, 2, 3))
In [41]: parser.parse_args('-r 4 5 6'.split())
Out[41]: Namespace(f='DEFAULT', g='DEFAULT', r=[4, 5, 6])
は、他のフラグのいずれかを指定する3つの数字で-r
を与えます。残りのデフォルトnargs='?'
と
In [42]: parser.parse_args('-f other'.split())
Out[42]: Namespace(f='other', g='DEFAULT', r=(1, 2, 3))
-g
別のオプションを持っていることに注意してください。それは引数なしで与えることができます。その場合、値はconst
になります。
In [43]: parser.parse_args('-f other -g'.split())
Out[43]: Namespace(f='other', g='const', r=(1, 2, 3))
In [44]: parser.parse_args('-f other -g more'.split())
Out[44]: Namespace(f='other', g='more', r=(1, 2, 3))
nargs=3
のような3ウェイオプションはありません。 3つの値を指定するか、-r
を使用しないでください。 1)no-rフラグ、2)引数なしのrフラグ、3)引数の3つのr flatを区別する必要がある場合は、2つのアクション、1つの 'store_true'、および3値。
のデフォルト値は、文字列と非文字列の値の差異を抑止する方法であっても、さまざまな設定方法があります。しかし、私は基本的な行動を示しました。
program.py -rで実行すると、argparseにはいくつかのパラメータが必要です。-rフラグをスキップすると、デフォルト値が使用されます。 – rammelmueller