Python 对globals()的直接赋值是否错误?
分配多个变量(或简单实例化)时,可以执行以下操作:Python 对globals()的直接赋值是否错误?,python,python-3.x,Python,Python 3.x,分配多个变量(或简单实例化)时,可以执行以下操作: list_0, list_1, list_2 = [], [], [] 这将使三个变量的列表为空 假设,如果要制作1000个空列表: list_0, ... , list_999 = [], ... , [] 如果使用顶部方法,这看起来相当乏味 在这种情况下,我的问题是,可以使用globals(),例如: for i in range(1000): globals()["list_%s" % i] = [] 我已经很多次没有见过这
list_0, list_1, list_2 = [], [], []
这将使三个变量的列表为空
假设,如果要制作1000个空列表:
list_0, ... , list_999 = [], ... , []
如果使用顶部方法,这看起来相当乏味
在这种情况下,我的问题是,可以使用globals()
,例如:
for i in range(1000):
globals()["list_%s" % i] = []
我已经很多次没有见过这种方法了,我开始怀疑这是否是因为我不知道的一些缺点
我在谷歌上搜索了不同的关键词,并在中找到了一些用例,等等,但最终没有结果
如有任何见解,将不胜感激。谢谢 简短答复:
是的,这是个坏主意
长答覆:
我同意@Norrius,事实上,所有像这样分配的东西都不好,下面是列表:
exec
,坏的globals
,坏的exec
和eval
的讨论:
另外,如您所见,有一个答案是使用setattr
下面是@Nadia对eval
的评论:
是的,使用eval是一种不好的做法。仅举几个原因:
>>> d = {'a':[1,2,3]}
>>> d['b']=[4,5,6]
>>> d
{'a': [1, 2, 3], 'b': [4, 5, 6]}
>>>
是的,在大多数情况下这是一个坏主意,只需列出一个列表就可以了。动态变量名是非常糟糕的。