Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中,使用字符串参数指向已定义的列表/数组对象_Python_String_Object_Arguments_Call - Fatal编程技术网

Python中,使用字符串参数指向已定义的列表/数组对象

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

在python中,是否可以将字符串参数指向脚本中定义的对象

例如,假设我们的参数是-layers,我在脚本中定义了一个名为convloop的列表

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中,使用所需的列表名作为它的键。或者如果你想访问函数的局部变量。非常感谢!字典是我写剧本的好方法!