Python循环中如何通过变量名拼接获取对应变量值?
解决方法
下面提供几种实用方式实现你的需求:
方法1:利用globals()/locals()获取变量字典
这两个函数能直接获取全局或局部作用域的变量字典,通过拼接后的键名取值:
test = ['num1', 'num2'] valuenum1 = 'x' valuenum2 = 'y' for i in test: print(globals()[f'value{i}'])
运行输出:
x y
如果变量在局部作用域(比如函数内部),替换成locals()即可。
方法2:用字典存储映射关系(推荐)
这种方式代码可读性更高,也更符合Python编程规范:
test = ['num1', 'num2'] value_dict = { 'num1': 'x', 'num2': 'y' } for i in test: print(value_dict[i])
直接通过字典键值对映射取值,逻辑清晰,还能避免操作全局变量的潜在问题。
方法3:getattr()(适用于类实例变量场景)
如果变量是类的实例属性,可使用该方法:
class ValueStore: def __init__(self): self.valuenum1 = 'x' self.valuenum2 = 'y' test = ['num1', 'num2'] store = ValueStore() for i in test: print(getattr(store, f'value{i}'))
内容的提问来源于stack exchange,提问作者griefter
相关产品推荐
相关产品推荐

