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

Python中如何通过存储变量名的字符串获取对应变量值

通过字符串变量名获取对应对象的实现方法

你当前代码里d3存储的是普通字符串值,直接打印当然只会输出"apr_30"本身,不会自动匹配同名变量,以下是几种可行的实现方案,按推荐优先级排序:

  • 优先方案:字典映射(最安全、可维护性最高)
    不要零散定义独立变量,直接把「变量名字符串」和「对应对象」的映射关系存在字典里,按需取值即可,完全可控,没有安全风险。

    import pandas as pd
    # 注:pandas原生没有pd.txt方法,读文本文件请根据文件格式用pd.read_csv/pd.read_table
    var_dict = {
        "apr_30": pd.read_table('example.txt')
    }
    d3 = "apr_30"
    # 直接按键取值即可拿到对应的文档对象
    print(var_dict[d3])
    

    后续如果要加其他日期对应的文件,直接往var_dict里加键值对就行,批量处理也非常方便。

  • 备选方案:通过内置作用域方法取值
    如果变量已经提前定义在作用域里,可以直接用Python内置的globals()(全局作用域)或locals()(局部作用域)拿到当前作用域的变量字典,再按字符串key取值:

    import pandas as pd
    apr_30 = pd.read_table('example.txt')
    d3 = "apr_30"
    # 全局作用域下取对应变量
    print(globals()[d3])
    

    这个方法可控性比字典差,不建议在复杂项目里用,临时写简单脚本可以凑合用。

  • 不推荐方案:使用eval函数
    直接写eval(d3)也能拿到对应值,但eval会直接执行传入的任意字符串内容,如果字符串来源不可控会引发严重的代码注入漏洞,非极端情况不要用。

另外提一句你原代码里的小问题:d3 = ("apr_30")外层的括号没有任何实际作用,等价于直接写d3 = "apr_30",就是普通的字符串赋值。

内容的提问来源于stack exchange,提问作者nwah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.04 16:18:27