如何在指定范围内动态修改argparse参数FLAGS.Ncolor的值?
问题分析与解决
嘿,你的问题出在大小写不一致上,我来给你拆解一下:
核心错误
你在循环里赋值的是FLAGS.NCOLOR(全大写的变量名),但实际上通过argparse定义的参数属性是FLAGS.Ncolor(驼峰式,和你add_argument里的--Ncolor对应),而且你打印的也是FLAGS.Ncolor——等于你根本没修改到正确的属性,所以代码一直输出默认值2。另外你原来的代码还漏了import argparse,这也是无法正常运行的小问题~
修正后的代码
import argparse p = argparse.ArgumentParser() p.add_argument('--Ncolor','-nc', default=2, type=int, help='Number of colors') FLAGS = p.parse_args() x = [i+1 for i in range(5)] for n_color in x: FLAGS.Ncolor = n_color # 这里改成正确的属性名 print("value is %d" % (FLAGS.Ncolor))
额外优化建议
其实如果只是想遍历不同的颜色值来测试逻辑,没必要直接修改FLAGS对象的属性,用一个独立变量会更清晰,还能避免修改命令行参数对象的副作用:
import argparse p = argparse.ArgumentParser() p.add_argument('--Ncolor','-nc', default=2, type=int, help='Number of colors') FLAGS = p.parse_args() x = [i+1 for i in range(5)] # 用单独变量存储遍历值,不修改FLAGS for current_color in x: print("value is %d" % current_color)
内容的提问来源于stack exchange,提问作者sara
相关产品推荐
相关产品推荐

