贴一个简单的方法。
(前面有位老兄提到过,我这里细化一下)
思路: 1.字典化 2.提取key名
Demo:
# 目的:将变量abc的名字提取为字符串 'abc' >> abc = 376 >> variable_name = list(dict(abc=abc).keys())[0] >> variable_name >> 'abc'
既然有题主这个需求,说明这个变量目前已被赋值,这个值可以是任意值,可以是int,string,甚至是一个类实例,这里以int举例。
来看一下具体发生了什么:
>> abc = 376 # 第一步:字典化 >> dict(abc = abc) # 最骚的就是这步了 >> {'abc': 376} # 所得的字典 # 第二步:取字典的key >> dict(abc = abc).keys() >> dict_keys(['abc']) # 得到一个字典key版的字符串 # 第三步:list化 >> list(dict(abc = abc).keys()) >> ['abc'] # 得到一个list # 最后 >> list(dict(abc = abc).keys())[0] >> 'abc' # 你要的东西:变量名的字符串 # 最后验证一下原变量有没有发生改变 >> abc >> 376 # 没变
这里最骚的一步就是第一步字典化:
粗体abc交给字典做key名,第二个abc(即376)是key的value。这就保证了变量在提取过程中值不会发生任何改变。
这个方法巧妙地利用了python字典化操作中将变量名变成key名的特点,根本无需调用复杂的底层命名空间等等这种鬼操作。
个人感觉,这个需求太太太太小众了,但极偶尔在有些奇奇怪怪的地方就能派上用场了。