我的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的方法是使用集合。