Python3.5:通过循环更改变量名来分配变量值
我试图用不同的值循环类似的变量名,但发现无法这样做。我把代码附在下面。你能告诉我如何通过循环来获得版本1代码的效果吗?非常感谢Python3.5:通过循环更改变量名来分配变量值,python,loops,Python,Loops,我试图用不同的值循环类似的变量名,但发现无法这样做。我把代码附在下面。你能告诉我如何通过循环来获得版本1代码的效果吗?非常感谢 #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 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 4: Bonus list comprehension version
def test():
return [i for i in range(1, 3)] # or list(range(1, 3))
全局范围、“可变变量”和所有其他解决方案都是多余的,而且通常都很难看(因为它们最终会导致在更大的应用程序中难以调试)。对于这类事情,只需使用列表
# Version 4: Bonus list comprehension version
def test():
return [i for i in range(1, 3)] # or list(range(1, 3))
您试图分配给
str
而不是名称(即变量)。这是不对的。想象一下,如果你做了“v1”=1
,有什么理由不能使用列表吗?使用字典。不要使用全局变量。@Eli Korvigo,你能更详细地说明在这种情况下如何使用字典吗?@CL.L关于你的哪一个是重复的问题,已经有足够的细节了。只需按照该链接进行操作。您试图分配给str
而不是名称(即变量)。这是不对的。想象一下,如果你做了“v1”=1
,有什么理由不能使用列表吗?使用字典。不要使用全局变量。@Eli Korvigo,你能更详细地说明在这种情况下如何使用字典吗?@CL.L关于你的哪一个是重复的问题,已经有足够的细节了。请点击该链接。大家好,谢谢您的及时回复。但我要寻找的是通过类似全局变量的循环。主要是做“v”+str(i)部分,打印只是为了说明结果。现在,我正在编写一个代码,在一个系列中开发30多个全局变量,每个变量都将分配给具有类似算法的tkinter小部件,因此,请寻找一种方法,通过循环实现,而不是一直重复类似的代码。有什么想法吗?再次感谢。为什么要使用全局变量?您几乎不需要全局范围。(我想不出在我的职业生涯中有任何时候我需要它。)另外,如果你想循环这些,并且它们都是相关的(比如你可能会认为它们存储为v1
,v2
,…,vN
),那么应该告诉你它应该是一个列表!大家好,谢谢你们的及时回复。但我要寻找的是通过类似全局变量的循环。主要是做“v”+str(i)部分,打印只是为了说明结果。现在,我正在编写一个代码,在一个系列中开发30多个全局变量,每个变量都将分配给具有类似算法的tkinter小部件,因此,请寻找一种方法,通过循环实现,而不是一直重复类似的代码。有什么想法吗?再次感谢。为什么要使用全局变量?您几乎不需要全局范围。(我想不出在我的职业生涯中有任何时候我需要它。)另外,如果你想循环这些,并且它们都是相关的(比如你可能会认为它们存储为v1
,v2
,…,vN
),那么应该告诉你它应该是一个列表!
# Version 4: Bonus list comprehension version
def test():
return [i for i in range(1, 3)] # or list(range(1, 3))