5 个回答
想要完全实现和你描述一致的效果是可以的。但是要使用
exec
。
一般来说,考虑到安全性和后期维护性并不建议这样动态调用。
a1, a2, a3, a4, a5, a6, a7, a8, a9 = 0, 0, 0, 0, 0, 0, 0, 0, 0
for i in range(1, 10):
exec(f"a{i} = {i}")
print(a1, a2, a3, a4, a5, a6, a7, a8, a9)
另一种比较 hack 的方法是直接调用
globals()
或
locals()
a1, a2, a3, a4, a5, a6, a7, a8, a9 = 0, 0, 0, 0, 0, 0, 0, 0, 0
for i in range(1, 10):
globals()[f"a{i}"] = i
print(a1, a2, a3, a4, a5, a6, a7, a8, a9)
如果需要动态地创建,你则需要在创建过程中把他们保存起来。
当然,一般情况下,以上方法都是 不推荐的 。
比较常用的方法是创建一个
dict
。然后在这个
dict
中自增需要的值即可。如果只是数字相关的,也完全可以使用
List
。
如果真要分成一个个变量少量可以使用解包处理。不过不如直接使用字典了。
a = {}