连接字符串形成变量名



我的python脚本中有许多包含整数的变量,例如

lab19 = 100-50 #50
lab20 = 200-20 #180

我有一个while循环,循环通过一个递增计数器,每次调用一个函数。函数需要传递变量,但19和20的部分变量名来自柜台。

我试过了,

y = 1
while y < 21:
bundleRun('lab' + str(y))
y += 1

,但这是将字符串'lab1'值传递给函数。

我如何让我的代码传递变量值(例如,50)到我的函数基于计数器?

感谢

我认为您应该将数据存储在列表或字典中,以便可以通过索引或键访问。但是如果你真的需要通过名称访问一个局部变量你可以使用locals()

y = 1
while y < 21:
a = locals()['lab' + str(y)]  # value stored in variable a
y += 1

虽然你可以这样做,但你不应该。[^1]在python中动态创建的变量是一种代码气味(不像TeX,这种事情是例程)。

相反,将所有内容存储在集合中:

results = {"lab19": 50, "lab20": 180}
for lab, result in results.keys():
bundleRun(result)
请注意,您的while循环可以更好地写成:
for y in range(1,21):
...

如果你真的需要这样做,locals()的另一个答案是可行的。

[^1]但情况可能更糟:你只是试图访问它们。也许你有来做这件事——但是如果你可以控制变量,python的方法是使用集合。

相关内容

  • 没有找到相关文章

最新更新