Python的变量名能随变量变化吗?

变量名能根据i变化吗?我想设置一些变量名,比如如下, 就是打印出


A0A1A2A3.代码应该如何写?
import NumPy as np

for i in range(0,3)
        Ai = 6
        print(Ai)

for i in range(0, 3):
locals()['A%s' % i] = 6

可以,使用exec就能够执行

for i in range(3):
    exec('A'+str(i)+'='+'6')
    exec('print(A{})'.format(i))

可以

for n in range(0, 7):
    globals()['strg%s' % n] = 'Hello'
# strg0 = 'Hello', strg1 = 'Hello' ... strg6 = 'Hello'

for x in range(0, 7):
    globals()[f"variable{x}"] = f"Hello the variable number {x}!"


print(variable0)
print(variable1)
print(variable2)
print(variable3)
print(variable4)
print(variable5)

img

for n in range(0, 3):
globals()['A%i' % n] = 2020 + n
print(A0)
print(A1)
print(A2)

动态变量名设置 有几种方案

第一种:根据命名空间

# 使用locals()获取局部命名空间 或者 使用globals()获取全局命名空间
names = locals()
# globals()

# 通过循环动态设置变量名称
for i in range(0, 3):
    names[f"A{i}"] = i
# 输出变量,如果使用IDE(例如Pycharm)这里会标红,因为IDE是静态检查的,但是执行是可以成功的
print(A0, A1, A2)

结果如下:

img

第二种:exec方法动态执行语句

for i in range(0, 3):
    # 动态执行 A1=1语句
    exec(f'A{i}={i}')
# 输出变量,如果使用IDE(例如Pycharm)这里会标红,因为IDE是静态检查的,但是执行是可以成功的
print(A0, A1, A2)

结果如下:

img

打印动态的变量名

如果想要达到直接循环打印print(Ai)的效果,就需要通过exec方法动态执行。

for i in range(0, 3):
    exec(f'A{i}={i}')
    exec(f'print(A{i})')

img

f'A{i}={i}'是Python3.6+提供的格式化语法,等价于 'A{}={}'.format(i,i) 等价于 'A%i=%i' % (i, i)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^