argparse互斥组参数值如何访问?附代码问题咨询
argparse互斥组参数访问及--predict数值列表获取问题解决
核心结论
互斥组仅限制同一时间只能选择其中一个参数,参数的访问方式和普通argparse参数完全一致——直接通过args.参数名即可获取值。
你的代码问题修正
原代码中--predict的help参数存在语法错误(多了一个单引号),修正后结合参数访问的示例代码如下:
parser = argparse.ArgumentParser(description='Video game preferences: train or predict mode.') group = parser.add_mutually_exclusive_group(required=True) group.add_argument('--train', action='store', help='训练模式参数') group.add_argument('--predict', nargs=4, type=float, action='store', help='represented by 1s') args = parser.parse_args() # 判断当前使用的互斥参数并访问对应值 if args.train: print(f"当前为训练模式,参数值:{args.train}") else: # --predict对应的4个值会被解析为float列表 print(f"当前为预测模式,数值列表:{args.predict}") # 可直接对列表进行操作,比如解包单独取值 a, b, c, d = args.predict print(f"单独取出的数值:{a}, {b}, {c}, {d}")
运行验证
当执行命令main.py --predict 1 8 7 6时,程序会输出:
当前为预测模式,数值列表:[1.0, 8.0, 7.0, 6.0] 单独取出的数值:1.0, 8.0, 7.0, 6.0
补充说明
- 执行原代码中的
print(args)(注意变量名应为args而非arg),会直接打印出解析后的命名空间对象,其中就能看到predict对应的列表值,比如:Namespace(predict=[1.0, 8.0, 7.0, 6.0])。 - 互斥组的作用只是约束参数的互斥性,不改变参数的存储和访问逻辑,所以无需额外特殊处理。
内容的提问来源于stack exchange,提问作者Defqon
相关产品推荐
相关产品推荐

