Python 3.5:通过循环更改变量名称来分配变量值
我试图用不同的值循环类似的变量名称,但发现无法这样做。我附上了下面的代码。你能否建议我循环做什么以获得版本1代码的效果?非常感谢。Python 3.5:通过循环更改变量名称来分配变量值
#Version 1: The intended effect
def test():
global v1, v2, v3
v1 = 1
v2 = 2
v3 = 3
print (v1)
print (v2)
print (v3)
if __name__ == "__main__":
test()
和:
#Version 2: The loop I tried but failed
def test():
global v1, v2, v3
for i in range (1,3):
"v" + str(i) = i
print ("v" + str(i))
if __name__ == "__main__":
test()
# Version 3: What you should be doing
def test():
v = []
for i in range(1, 3):
v.append(i)
print(v[i-1])
if __name__ == '__main__':
test()
全球范围内,“变量变量”,以及各种其他的解决方案是多余的,一般丑陋(因为它们最终会导致难以调试破损在更大的应用程序)为此。只需使用list
这种类型的东西。
# Version 4: Bonus list comprehension version
def test():
return [i for i in range(1, 3)] # or list(range(1, 3))
大家好,感谢您的及时回复。但我正在寻找的是通过类似的全局变量的循环。重点是做“v”+ str(i)的部分,打印只是为了说明结果。现在我正在编写一个代码来开发一个系列中的30多个全局变量,并且每个变量都将被分配到一个类似算法的tkinter小部件,因此寻找一种循环方式,而不是一直重复类似代码。对此有何想法?再次感谢。 –
你为什么使用全局变量?你几乎不需要全球范围。 (我从未想过在职业生涯中任何时候我都需要它)。另外,如果你想循环这些并且它们都是相关的(例如,你可能认为把它们存储为'v1','' v2',...,'vN'),那么**应该告诉你它应该是一个列表**! –
您试图将“str”分配给一个名称(即变量)。这是不正确的。想象一下,如果你已经完成了“v1”= 1' –
你有什么理由不能使用列表? –
使用字典。不要使用全局变量。 –