Python 如何使用字符串设置变量的名称

Python 如何使用字符串设置变量的名称,python,Python,目前在我的代码中,我一直在使用globals()['value%s'%str(int(y))]来使用字符串设置变量的名称,但现在我遇到了一个问题,因为这个变量是全局变量,我不希望它是全局变量。有没有办法更改代码,这样我就可以使用字符串创建变量名,而无需创建全局变量?您无法更新局部变量字典。一种更稳健、更灵活的方法是使用函数本地的dict: def foobar(): dct = {} dct[f'value{y}'] = 'something' ... 无法更新本地人

目前在我的代码中,我一直在使用
globals()['value%s'%str(int(y))]
来使用字符串设置变量的名称,但现在我遇到了一个问题,因为这个变量是全局变量,我不希望它是全局变量。有没有办法更改代码,这样我就可以使用字符串创建变量名,而无需创建全局变量?

您无法更新
局部变量
字典。一种更稳健、更灵活的方法是使用函数本地的
dict

def foobar():
    dct = {}
    dct[f'value{y}'] = 'something'
    ... 

无法更新
本地人
字典。一种更稳健、更灵活的方法是使用函数本地的
dict

def foobar():
    dct = {}
    dct[f'value{y}'] = 'something'
    ... 

有没有理由不使用
dict
?为什么要从字符串中设置变量名?这就是dicts的作用。您不能动态编辑局部变量,因为它们是通过引擎盖下的索引而不是名称来访问的。使用字典!可能的重复是否有不使用
dict
的原因?为什么要从字符串设置变量名?这就是dicts的作用。您不能动态编辑局部变量,因为它们是通过引擎盖下的索引而不是名称来访问的。使用字典!Sol I的可能重复项刚刚尝试了
locals()['value%s'%str(int(y))]=8
,它似乎可以工作
locals()['value%s'%str(int(y))]'返回8,
locals()`返回一组变量名,包括
value5
(因为y是5)。那么它是不是在我背后做了些什么来欺骗我,让我认为它是有效的?@Deepstop也许你在函数之外运行过它?在模块范围内,
locals
globals
是相同的,因此设置为
locals
将在那里工作。这是有意义的。谢谢。我刚刚尝试了
locals()['value%s'%str(int(y))]=8
,它似乎起作用了
locals()['value%s'%str(int(y))]'返回8,
locals()`返回一组变量名,包括
value5
(因为y是5)。那么它是不是在我背后做了些什么来欺骗我,让我认为它是有效的?@Deepstop也许你在函数之外运行过它?在模块范围内,
locals
globals
是相同的,因此设置为
locals
将在那里工作。这是有意义的。谢谢