是否可以在 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())
Namespace(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
但请注意,最后一个方法仅在 --num-2
不是“假”的情况下才起作用
关于python - 在 argparse 中使用另一个选项值作为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45804965/