vList = []for i in range(3):vars()["v%s" % i] = i ** 2vList.append(vars()["v%s"%i])for i in range(3):print("v%s"%i, "=", vList[i])
Output:
v0 = 0v1 = 1v2 = 4
vDict = {}for i in range(3):vars()["v%s" % i] = i ** 2vDict[i] = vars()["v%s" % i]for i in range(3):print("v%s"%i, "=", vDict[i])
Output:
v0 = 0v1 = 1v2 = 4
vDict = {}for i in range(1000):vars()["v%s" % i] = i ** 2vDict[i] = vars()["v%s" % i]for i in range(0, 1000, 200):print("v%s"%i, "=", vDict[i])print()locals()[vDict[200]] = 1999 #indirect assignmentprint("v200 =", vDict[200], "(direct v200 value is unchanged)") print()print("v200 =", vars()[vDict[200]], "(indirect value)")print("v200 =", locals()[vDict[200]], "(indirect value)") print("v200 =", globals()[vDict[200]], "(indirect value)")print()vars()["v%s"%200] = 2020print("v200 =", globals()["v%s"%200], "(direct value)")v200 = 2021print("v200 =", locals()["v%s"%200], "(direct value)")
Output:
v0 = 0v200 = 40000v400 = 160000v600 = 360000v800 = 640000v200 = 40000 (direct v200 value is unchanged)v200 = 1999 (indirect value)v200 = 1999 (indirect value)v200 = 1999 (indirect value)v200 = 2020 (direct value)v200 = 2021 (direct value)
vDict = {}for i in range(0, 1000, 200):vars()["v%s" % i] = i ** 2vDict[i] = vars()["v%s" % i]for i in range(0, 1000, 200):print("v%s"%i, "=", vDict[i])print()# indirect assignment using 40000 as variable (variable variable)locals()[vDict[200]] = 1999 # using value 40000 as a variableprint("v200 =", vDict[200], "(direct v200 value is unchanged)") print()print("v200 =", vars()[vDict[200]], "(indirect value from key 40000)")print("{ '40000':", globals()[40000],"}")print()if vars()[vDict[200]] == globals()[40000]:print("They are equal!")if globals()[vDict[200]] == locals()[40000]:print("They are equal!")
Output:
v0 = 0v200 = 40000v400 = 160000v600 = 360000v800 = 640000v200 = 40000 (direct v200 value is unchanged)v200 = 1999 (indirect value from key 40000){ '40000': 1999 }They are equal!They are equal!