Python 什么';这是局部变量()和全局变量()之间的区别

Python 什么';这是局部变量()和全局变量()之间的区别,python,Python,我不明白这段代码有什么问题 请让我知道我是如何解决这个问题的 我本以为这可能是好的,但它导致了错误 >>> def L(): ... for i in range(3): ... locals()["str" + str(i)] = 1 ... print str0 ... >>> L() 如果我执行它,就会发生以下错误 Traceback (most recent call last): File "<s

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

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

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

>>> 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
但是!!!如果我不使用for语句,我可以这样写,而且效果很好

>>> def LL():
...     locals()["str" + str(0)] = 1
...     print str0
... 
>>> LL()
1
我希望在执行上述代码后,使用方法中设置的变量获得结果

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

注:

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

注:

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

注:

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

注:

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


你只是在胡闹,还是真的打算用它做点什么?如果您打算将代码用于某些事情,这是一个坏主意。你应该使用一个列表,或者一个以0,1,2为键的字典。当然我知道使用列表或者字典是很有用的。但我想知道为什么会发生这个错误。不要这样做!你不必与本地人打交道,编写str[0]=1、str[1]=1等要简单得多(如BrenBarn所说,使用列表或dict)。将变量转换为变量名或将变量名转换为变量名总是一种不好的做法。然而,这个问题仍然是了解当地人如何工作的一个很好的教训:)。谢谢!所以我明白我应该使用列表或字典。可能的重复你只是在胡闹,还是你真的打算用它做点什么?如果您打算将代码用于某些事情,这是一个坏主意。你应该使用一个列表,或者一个以0,1,2为键的字典。当然我知道使用列表或者字典是很有用的。但我想知道为什么会发生这个错误。不要这样做!你不必与本地人打交道,编写str[0]=1、str[1]=1等要简单得多(如BrenBarn所说,使用列表或dict)。将变量转换为变量名或将变量名转换为变量名总是一种不好的做法。然而,这个问题仍然是了解当地人如何工作的一个很好的教训:)。谢谢!所以我明白我应该使用列表或字典。可能的重复你只是在胡闹,还是你真的打算用它做点什么?如果您打算将代码用于某些事情,这是一个坏主意。你应该使用一个列表,或者一个以0,1,2为键的字典。当然我知道使用列表或者字典是很有用的。但我想知道为什么会发生这个错误。不要这样做!你不必与本地人打交道,编写str[0]=1、str[1]=1等要简单得多(如BrenBarn所说,使用列表或dict)。将变量转换为变量名或将变量名转换为变量名总是一种不好的做法。然而,这个问题仍然是了解当地人如何工作的一个很好的教训:)。谢谢!所以我明白我应该使用列表或字典。可能的重复你只是在胡闹,还是你真的打算用它做点什么?如果您打算将代码用于某些事情,这是一个坏主意。你应该使用一个列表,或者一个以0,1,2为键的字典。当然我知道使用列表或者字典是很有用的。但我想知道为什么会发生这个错误。不要这样做!你不必与本地人打交道,编写str[0]=1、str[1]=1等要简单得多(如BrenBarn所说,使用列表或dict)。将变量转换为变量名或将变量名转换为变量名总是一种不好的做法。然而,这个问题仍然是了解当地人如何工作的一个很好的教训:)。谢谢!所以我知道我应该使用列表或字典。可能的副本
>>> str0
1
>>> str1
1
>>> str2
1