Python3.5:通过循环更改变量名来分配变量值

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()

我试图用不同的值循环类似的变量名,但发现无法这样做。我把代码附在下面。你能告诉我如何通过循环来获得版本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 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))