在argparse中使用另一个选项值作为默认值

时间:2017-08-21 20:20:44

标签: 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".split())

命名空间(num_1 =' 10',num_2 =' 1')#,num_2应与num_1相同

1 个答案:

答案 0 :(得分:3)

您可以省略--num-2的可选值。这意味着如果没有给出值,则默认值为None。然后,您可以在接收命令行参数后测试是否是这种情况。如果--num2None,请将其设置为等于--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

但请注意,如果--num-2永远不是“虚假”,那么 给出的最后一种方法只会