在调用某个函数时,看着参数配置处是可以在调用时指定参数的,就不用每次修改源代码了。
parser.add_argument("--video_path", default='./data/test1209/10.avi', type=str)
OK,使用试试,调用函数时输入如下命令
python person_search_reid.py --video_path "./data/test1209/05.avi"
结果报错,说有不认识的参数
error: unrecognized arguments: --video_path ./data/test1209/05.avi
啥?不认识?这不是你自己定义的吗?两根横线--,空格号分隔,和定义的属性一致保持的是下划线没错啊,怎么参数传进来你就不认识了?
后面继续调试,发现这个函数其实声明参数的时候没错,是因为他后面又调用了另外一个函数,那个函数在初始化的时候也用了
args = get_parser().parse_args()
这个声明,所以我传进去的video_path在这个函数初始化的时候又被call到了,但是呢,这个函数并没有声明过我有这个变量哦,你怎么进来了,我不认识你哎。所以就报错了。
那咋办?要么接下来就直接每次换个video_path就换个代码。但是好奇宝宝绝不认输,这个函数参数传递不会这么鸡肋吧,这样就不能用了吗?然后发现了parser.parse_known_args()这个函数,看描述好像是在调用的时候只选取自己需要的参数,不需要的留到后面去给别的接下来被调用的函数。于是我把后面那行调用参数的方法改成了如下:
args, unknown = get_parser().parse_known_args()
OK,能正常运行了,nice!
讲道理,其实我觉得吧,改前面那个函数的调用应该也是阔以的,但是我没去试了,遇到和我一样情况的可以试试。我就先去吃饭啦~~~(干饭人干饭魂)