我想知道是否有可能在所有的Python字符串化 變量ID /符號 - 也就是說,行爲如下功能:任何方式來在Python中對變量id /符號進行字符串化?
>>> symbol = 'whatever'
>>> symbol_name(symbol)
'symbol'
現在,它是很容易做到這一點上函數或類(如果是 直接引用的對象):
>>> def fn(): pass
>>> fn.func_name
'fn'
但是我正在尋找能夠在所有情況下,即使 間接對象引用作品的一般方法。我想過使用id(var) ,但沒有運氣。
有沒有辦法做到這一點?
可能重複的[python,我可以打印原始的var名稱嗎?](http://stackoverflow.com/questions/544919/python-can-i-print-original-var-name) – Anycorn 2010-06-08 19:39:43
我正在看在python26/Python/ceval.c中實際的NameError源代碼顯然是NameError獲得符號名稱的權利。 (正如我在下面指出的,symbol_name(non_existent)產生一個回溯,其中「NameError:name'non_existent'未定義」消息。)PyTuple_GetItem(和PyDict_GetItem)產生我想要的符號名稱,但是我還沒有找到一個接口它並將其展示給用戶。所以除非別人證明我,否則這可能是不可能的。對於類的任何實例變量,可以通過覆蓋__getattribute__和grep NameError來實現,但是。 – OTZ 2010-06-08 20:35:59