Python中,使用字符串参数指向已定义的列表/数组对象
在python中,是否可以将字符串参数指向脚本中定义的对象 例如,假设我们的参数是-layers,我在脚本中定义了一个名为convloop的列表Python中,使用字符串参数指向已定义的列表/数组对象,python,string,object,arguments,call,Python,String,Object,Arguments,Call,在python中,是否可以将字符串参数指向脚本中定义的对象 例如,假设我们的参数是-layers,我在脚本中定义了一个名为convloop的列表 convloop = ['conv2/3x3', 'conv2/3x3_reduce', 'conv2/3x3'] 我通过了“python example.py-layers-convloop” 我需要它获取arg字符串(convloop)并指向实际的convloop列表(数组),而不仅仅是字符串“convloop” 我知道我能行 if args.l
convloop = ['conv2/3x3', 'conv2/3x3_reduce', 'conv2/3x3']
我通过了“python example.py-layers-convloop”
我需要它获取arg字符串(convloop)并指向实际的convloop列表(数组),而不仅仅是字符串“convloop”
我知道我能行
if args.layers == 'convloop':
#loop over layers as set in convloop array
endparam = convloop[frame_i % len(convloop)]
如果argstring为“convloop”,则将调用列表(数组)“convloop”
然后循环浏览列表
但是,我的脚本中有多个列表,我不希望每次为每个列表重写此代码,而是希望它读取argstring并指向匹配的列表对象,以便传递例如:
“python example.py-layers-pooploop
”和“python example.py
”-layers-fartloop”,并让它们相应地指向pooploop和fartloop列表
我正在使用python 2.7 btw您可以使用或获取相应的对象:
>>> oneloop = [1,2,3]
>>> globals()["oneloop"]
[1, 2, 3]
不过,你可能不应该这样做:这可能很危险。这也表明您应该重新思考脚本的体系结构
口述会是一个更好的主意:
>>> possible_loops = {"oneloop": [1,2,3], "twoloop": [4,5,6]}
>>> possible_loops
{'oneloop': [1, 2, 3], 'twoloop': [4, 5, 6]}
>>> possible_loops['oneloop']
[1, 2, 3]
为什么不使用数组字典呢?然后,您可以对[args.layers]执行my_loop=loop_。将数据保留在变量名称之外。如果你想做这样的事情,你应该把你的列表放到一个dict中,使用所需的列表名作为它的键。或者如果你想访问函数的局部变量。非常感谢!字典是我写剧本的好方法!