Python中是否支持将字符串转换为对应名称的变量进行引用?
字符串转对应变量引用的实现方案
完全可以实现,根据你要获取的变量所在作用域,直接用Python内置的接口就能完成转换,不需要额外安装第三方模块:
- 局部作用域变量:调用内置函数
locals(),它会返回当前局部作用域内「变量名:变量值」的映射字典,直接按字符串键名取值即可 - 全局作用域变量:调用内置函数
globals(),用法和locals()一致,返回全局作用域的变量映射字典
对应你的示例代码,转换逻辑可以直接写成列表推导式:
a = b = c = 0 my_list = ["a", "b", "c"] # 完成转换 my_list = [locals()[var_name] for var_name in my_list]
运行后得到的my_list和直接写[a, b, c]的引用效果完全一致。
重要提示:这种动态查找变量的写法可维护性很差,很容易因为作用域变动抛出键不存在的错误。常规业务场景下更推荐你一开始就用字典统一管理同组变量,比如直接定义
var_dict = {"a":0, "b":0, "c":0},后续需要取值直接按键名索引即可,比动态检索作用域的方案稳定安全得多。
如果你要获取的是类/实例对象的属性,优先用内置函数getattr(对象, 属性名字符串)实现,这是官方推荐的标准写法,比扫作用域的方案可控性高很多。
内容的提问来源于stack exchange,提问作者Harold Tsai
相关产品推荐
相关产品推荐

