You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:15:05