Python中如何通过字符串形式的变量名访问对应的实际变量
Python通过字符串形式的变量名访问对应变量的实现方案
方案1:使用内置作用域字典直接获取
Python提供了globals()和locals()两个内置函数,分别返回当前全局作用域、局部作用域下所有变量组成的字典,键为变量名字符串,值为变量本身。
针对你的示例需求,实现代码如下:
some_dict = { 'one':1, 'two':2 } x = 'some_dict' # 若变量在全局作用域,使用globals()获取 target_dict = globals()[x] print(target_dict) print(target_dict['one'])
如果要访问的变量定义在函数内部等局部作用域,将globals()替换为locals()即可。
方案2:使用顶层字典统一管理(更推荐)
直接操作作用域字典存在误修改其他变量、后期维护混乱的问题,更适合你的游戏开发场景的方案是额外定义一个顶层的大字典,统一管理所有需要动态访问的战斗相关数据:
# 统一存储所有游戏相关的字典数据 game_data_pool = { "some_dict": { "one": 1, "two": 2 }, # 后续新增的玩家属性、怪物配置、战斗buff等字典都可以放入该池统一管理 "player_attr": {"hp": 100, "attack": 30}, "monster_1": {"hp": 80, "attack": 15} } x = "some_dict" target_dict = game_data_pool[x] print(target_dict) print(target_dict["one"])
该方案的优势非常适合文字冒险游戏的开发场景:
- 所有游戏数据分类聚合,后续排查问题、新增功能的效率更高
- 不会意外污染全局作用域的无关变量,安全性更高
- 后续如果需要实现存档、读档功能,直接序列化这个顶层字典即可,不需要单独处理零散的变量。
内容的提问来源于stack exchange,提问作者paochy
相关产品推荐
相关产品推荐

