Python 使用循环读取和写入变量

Python 使用循环读取和写入变量,python,Python,我想编写一个程序,使变量具有如下循环: for k in range(5): exec(f'test_{k} = k') 但问题是我想做同样的事情,但是从变量中读取值: for k in range(5): print('test_'+ k ) 我知道这行不通,因为: 它是int到str(它给出了这个错误) 它不会打印变量的值(因为他不知道它是一个变量) 有人能帮我吗?对于第一个问题,您已经在第一个示例(f'test{k}=k')中解决了它,所以您也可以在第二个示例中解决它

我想编写一个程序,使变量具有如下循环:

for k in range(5):
    exec(f'test_{k} = k')
但问题是我想做同样的事情,但是从变量中读取值:

for k in range(5):
    print('test_'+ k )
我知道这行不通,因为:

  • 它是int到str(它给出了这个错误)
  • 它不会打印变量的值(因为他不知道它是一个变量)

  • 有人能帮我吗?

    对于第一个问题,您已经在第一个示例(
    f'test{k}=k'
    )中解决了它,所以您也可以在第二个示例中解决它

    范围(5)内k的
    :
    执行官(f'print(test_{k}))
    
    或者您可以先使用
    exect(f'test{k}')
    eval(f'test{k}')
    读取值,然后对其执行任何操作


    或者甚至使用
    globals()
    locals()

    首先,您使用的
    print()
    会逐字打印字符串,它应该会抛出错误,因为字符串和int无法连接:

    for k in range(5):
        print(globals()[f'test_{k}'])
    
    其次,如果输入是恶意的,
    eval()
    可能是危险的,因此为了避免它,请使用
    globals()

    最后,最好的方法是使用字典:

    varDic = {f'test_{k}':k for k in range(5)}
    
    然后像这样检索:

    varDic['test_3']
    

    在循环或其他内部。

    在循环中使用eval
    print(eval(f“test{k}”))
    不要这样做,这就是为什么……谢谢,但是我可以在if中这样做吗?你能分享一个你想要的用法示例吗?
    varDic['test_3']