我希望有一个可选参数,如果只有标志存在而没有指定值,则默认为一个值,但如果用户指定了一个值,则存储用户指定的值,而不是默认值。是否已经有相应的操作?

一个例子:

python script.py --example
# args.example would equal a default value of 1
python script.py --example 2
# args.example would equal a default value of 2

我可以创建一个动作,但想看看是否有现有的方法来做到这一点。


当前回答

两者的区别:

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)

and

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)

是这样:

myscript.py => debug在第一种情况下是7(默认值),在第二种情况下是“None”

Myscript.py——debug => debug在每种情况下都是1

Myscript.py——debug 2 => debug在每种情况下都是2

其他回答

两者的区别:

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)

and

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)

是这样:

myscript.py => debug在第一种情况下是7(默认值),在第二种情况下是“None”

Myscript.py——debug => debug在每种情况下都是1

Myscript.py——debug 2 => debug在每种情况下都是2

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)

娜戈= ' ?'表示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)

then

% test.py 
Namespace(example=1)