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



是否可以在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。然后,您可以在接收命令行参数后测试是否是这种情况。如果--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永远不会是"假的"时才有效

最新更新