如何将命令vars()[x]用于函数?

时间:2013-06-19 14:13:33

标签: python python-2.7

我想要做的是比下面的例子稍微长一点,但无论如何,它不起作用,我不知道如何弄明白。我需要使用变量如strain1,strain2来分配数组,但首先,我正在尝试分配一个空列表[]。如果我不使用某个功能,那就有效。我需要多次使用该块,这就是我需要这个功能的原因。

def test():
    for i in xrange(11):
         v = 'strain' + '%d' % i
         vars()[v] = []

test()
strain5

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    strain5
NameError: name 'strain5' is not defined

1 个答案:

答案 0 :(得分:4)

您正在寻找globals() function

vars()(不带参数)在函数中返回当前名称空间,该函数是本地名称空间,而不是模块全局变量。

演示:

>>> def test():
...     for i in xrange(11):
...          v = 'strain' + '%d' % i
...          globals()[v] = []
... 
>>> test()
>>> strain5
[]

但是,您想重新考虑您的变量。总是,你真的想要创建一个列表或字典:

strains = [[] for _ in xrange(11)]

创建11个嵌套列表,您可以使用strains[0]strains[1]等访问这些列表。