如何在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
相关产品推荐
相关产品推荐

