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

如何在Python中打印变量名而非变量值?含动态字典键需求

如何在Python中获取变量名的字符串形式?

针对你提出的需求——把变量名lst以字符串形式输出并作为字典的键,这里提供几种实用方法:

方法1:直接硬编码字符串(简单直接)

如果变量名是固定的,直接写字符串'lst'就行,这是最直观的方式:

lst = [1,2]
my_dict = {'lst': lst}
print('lst')  # 输出变量名字符串
print(my_dict['lst'])  # 输出变量值[1,2]

方法2:利用locals()或globals()动态查找

如果需要根据变量值反向获取变量名,可以遍历局部/全局命名空间,但要注意如果有多个变量值相同,这种方法可能返回错误的名字:

lst = [1,2]
x = lst

# 从局部命名空间中查找对应值的变量名
def get_var_name(var):
    for name, value in locals().items():
        if value is var:
            return name
    return None

var_name = get_var_name(lst)
print(var_name)  # 输出'lst'

# 用来创建动态字典
my_dict = {var_name: lst}

方法3:结合inspect模块(更可靠的动态方式)

如果要在函数中动态获取调用者的变量名,可以用inspect模块解析栈信息,这种方法更适合复杂场景:

import inspect

lst = [1,2]

def get_var_name(var):
    frame = inspect.currentframe().f_back
    for name, value in frame.f_locals.items():
        if value is var:
            return name
    return None

var_name = get_var_name(lst)
print(var_name)  # 输出'lst'
my_dict = {var_name: lst}

注意事项

  • Python中变量名本身只是对内存中对象的引用,语言层面没有直接提供"获取变量名字符串"的原生方法,以上都是基于命名空间的间接实现。
  • 如果变量值是不可变对象(比如整数、字符串),多个变量可能指向同一个对象,此时用方法2/3可能得到不符合预期的变量名,这种场景下建议优先用方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:50:21