locals()和globals()之间的区别是什么

时间:2014-01-04 21:24:55

标签: python

我不明白这段代码有什么问题。

请让我知道如何解决这个问题。

我认为这可能是好的,但它导致了错误。

>>> def L():
...     for i in range(3):
...             locals()["str" + str(i)] = 1
...     print str0
... 
>>> L()

如果我执行它,则会发生以下错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in a
NameError: global name 'str0' is not defined

但是,如果我使用globals(),则不会发生错误(如下所示)

>>> def G():
...     for i in range(3):
...             globals()["str" + str(i)] = 1
...     print str0
... 
>>> G()
1

但是!!!如果我不使用for语句,我可以这样写,并且效果很好。

>>> def LL():
...     locals()["str" + str(0)] = 1
...     print str0
... 
>>> LL()
1

我希望在执行上述代码后使用方法中设置的变量来获得结果。

>>> str0
1
>>> str1
1
>>> str2
1

1 个答案:

答案 0 :(得分:3)

From the documentation of locals()

  

注意:

     

不应修改此词典的内容;更改可能不会影响解释器使用的本地和自由变量的值。