在Python中有什么方法可以将变量id/符号转为字符串吗?
我在想,在Python中是否有办法把变量的ID或符号转换成字符串,也就是我希望有一个函数,能像这样工作:
>>> symbol = 'whatever'
>>> symbol_name(symbol)
'symbol'
现在,对于函数或类(如果是直接引用对象),这很简单:
>>> def fn(): pass
>>> fn.func_name
'fn'
但我想找一种通用的方法,能在所有情况下都适用,甚至对于间接引用的对象。我想过用id(var)来实现,但还没有成功。
有没有什么办法可以做到这一点呢?
3 个回答
3
我觉得这不太可能。即使是对于函数来说,那也不是变量的名字:
>>> def fn(): pass
...
>>> fn.func_name
'fn'
>>> b=fn
>>> b.func_name
'fn'
>>> del fn
>>> b.func_name
'fn'
>>> b()
>>> fn()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'fn' is not defined
4
这里,我相信你可以把它变得更好 =)
def symbol_name(a):
for k,v in globals().items():
if id(a)==id(v): return k
更新:正如unbeli所提到的,如果你有:
a = []
b = a
这个函数将无法给你显示正确的名字,因为id(a)和id(b)是相等的。
-1
答案是:“不可能。”