Answers:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--example', nargs='?', const=1, type=int)
args = parser.parse_args()
print(args)
% test.py
Namespace(example=None)
% test.py --example
Namespace(example=1)
% test.py --example 2
Namespace(example=2)
nargs='?'
表示0或1参数const=1
当参数为0时设置默认值type=int
将参数转换为int如果即使未指定,test.py
也要设置example
为1 --example
,则包括default=1
。也就是说,
parser.add_argument('--example', nargs='?', const=1, type=int, default=1)
然后
% test.py
Namespace(example=1)
和...之间的不同:
parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)
和
parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)
因此是:
myscript.py
=>在第一种情况下,debug是7(默认情况下),在第二种情况下是“ None”
myscript.py --debug
=>在每种情况下,调试均为1
myscript.py --debug 2
=>在每种情况下,调试均为2
self.foo = (args.bar or some_else_source).upper()
。它将在无对象AFAIUC上中断。