Python批量生成与调用变量:Locals()局限性与字典替代方案

Felix
Felix
发布时间:2026-10-14 | 6人浏览过
原创

本文探讨Python中批量生成和调用变量的两种方法。首先分析使用locals()在普通函数中的可行性及其在类中因KeyError失效的问题,随后推荐采用字典作为更优雅且通用的解决方案,通过键值对形式实现变量的批量创建与访问,兼顾代码维护性与可读性。

Python批量生成变量的需求与挑战

在近期开发过程中,遇到一个常见需求:如何在Python中批量生成一系列变量(例如X1、X2、X3),并在后续方法中对其进行赋值和取值操作。尽管此问题较为普遍,且此前曾遇到过类似情况而未深入处理,但本次面对仅需创建少量变量的场景,从代码维护和可读性的角度出发,仍需谨慎选择实现方式。若需生成一百甚至一万个变量,简单复制粘贴代码显然不可取,这违背了软件工程中对软件维护性的基本要求。

因此,培养良好的编码习惯至关重要,应避免通过重复编写相同代码来解决问题。

Locals()方法的局限性

尝试使用Locals()方法

虽然locals()在普通函数内部可以正常工作,但在类定义中却无法使用。这一限制曾困扰我许久,因此在编写类时需要批量创建和调用变量的场景下,不建议采用此方法。


for i in range(3):
  locals() ['x' + str(i)] = i

for j in range(3):
  a = locals() ['x' + str(j)]
  print(a)
print(x0)

执行结果如下:


0
1
2
0

此时在普通函数中一切正常,但在编写的类中无法运行:


class test(object):
  def __init__(self):
    for i in range(3):
      locals() ['self.x' + str(i)] = i
  def run(self):
    for i in range(3):
      a = locals() ['self.x' + str(i)]
      print(a)

a = test()
a.run()

报错信息如下,并没有找到这个变量。而我在编写GUI时,类是常用的工具,所以在类中调用这个方法时,导致了错误。


KeyError: 'self.x0'

基于字典的优雅解决方案

因此,我找到了一种更为优雅的实现方式,即使用字典。

使用字典

利用字典的键值对特性,特别是将键设置为字符串,可以为这类问题提供良好的解决方案。


class test(object):
  def __init__(self):
    self.d = {}
    for i in range(3):
      self.d['x' + str(i)] = i
  def run(self):
    for i in range(3):
      a = self.d['x' + str(i)]
      print(a)

asd = test()
asd.run()

此时便可以愉快的在类中批量的生成与调用变量。而在普通函数中也是可以的:


d = {}

for i in range(3):
  d['x' + str(i)] = i
  
print(d.keys())
print(d['x0'])

for i in range(3):
  print(d['x' + str(i)])

输出结果如下:


dict_keys(['x0', 'x1', 'x2'])
0
0
1
2

以上就是Python如何批量生成和调用变量的详细内容,更多关于Python批量生成和调用变量的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表