在Python中有什么方法可以将变量id/符号转为字符串吗?

2 投票
3 回答
4046 浏览
提问于 2025-04-15 23:42

我在想,在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

答案是:“不可能。”

撰写回答