Python 在argparse中将另一个选项值用作默认值

Python 在argparse中将另一个选项值用作默认值,python,Python,是否可以在argparse中将另一个选项值用作默认值 parser.add_argument("--num-1", default='1', help="[OPTIONAL] arg 1") parser.add_argument("--num-2", default='1', help="[OPTIONAL] arg 2") 在这里,如果没有将默认值传递给--num-2,我希望使用与num_1相同的值作为其默认值或输入值 parser.parse_args("--num-1 10".spli

是否可以在argparse中将另一个选项值用作默认值

parser.add_argument("--num-1", default='1', help="[OPTIONAL] arg 1")
parser.add_argument("--num-2", default='1', help="[OPTIONAL] arg 2")
在这里,如果没有将默认值传递给--num-2,我希望使用与num_1相同的值作为其默认值或输入值

parser.parse_args("--num-1 10".split())

名称空间(num_1='10',num_2='1')#即num_2应与num_1相同您可以省略
--num-2
的可选值。这意味着如果未给出任何值,默认值将为
None
。然后,您可以在接收命令行参数后测试情况是否如此。如果
--num2
None
,则将其设置为等于
--num-1
的值:

parser.add_argument("--num-1", default='1', help="[OPTIONAL] arg 1")
parser.add_argument("--num-2", help="[OPTIONAL] arg 2")
...
args = parser.parse_args()
if args.num_2 is None:
    args.num_2 = args.num_1
或者更简洁地说:

args.num_2 = args.num_1 if args.num_2 is None else args.num_2
args.num_2 = args.num_2 or args.num_1
更简洁地说:

args.num_2 = args.num_1 if args.num_2 is None else args.num_2
args.num_2 = args.num_2 or args.num_1

但是请注意,最后给出的方法只有在
--num-2
从来都不是“falsy”的情况下才会起作用。

如果用户在命令行上为num-2指定0,您的最后一个简洁示例将不起作用…@Ben True,我假设OP不会出现这种情况。但这是一个公平的观点。我要补充一点。