Python运行时如何获取动态拼接名称的变量的实际值
你拼接得到的是变量名对应的字符串,并非实际的变量引用,所以直接打印只会输出字符串本身,有几种方案可以实现你的需求:
方案1:使用globals()获取全局变量
如果变量定义在全局作用域,通过globals()返回的全局变量字典,用变量名字符串作为键即可取出对应值:
a1 = 10 a2 = 20 for i in range(1, 3): var_name = f"a{i}" value = globals()[var_name] print(value)
运行后输出为:
10 20
方案2:使用locals()获取局部变量
如果变量定义在局部作用域(比如函数内部),替换为locals()即可:
def get_values(): a1 = 10 a2 = 20 for i in range(1, 3): var_name = f"a{i}" value = locals()[var_name] print(value) get_values()
更推荐的实践
动态通过字符串匹配变量名的写法可读性、可维护性都较差,非特殊场景不推荐使用,更合理的做法是将同类型的序列数据提前存入列表或字典中,直接遍历取值:
# 用列表存储,直接遍历 a_list = [10, 20] for value in a_list: print(value) # 用字典存储,按key取值 a_dict = {"a1": 10, "a2": 20} for i in range(1, 3): print(a_dict[f"a{i}"])
内容的提问来源于stack exchange,提问作者user14695260
相关产品推荐
相关产品推荐

