2015-11-04 58 views
0

我希望能夠訪問傳遞給函數的變量的名稱,例如,python introspection - 獲取傳遞給函數的變量的名稱

def f(x): 
    '''Returns name of list/dict variable passed to f''' 
    return magic(x) 

>>a = [1,2,3] 
>>print(f(a)) 
'a' 
>>print(f(2)) 
None 

我懷疑這是可能的使用Python內省,但我不知道足夠了解檢查模塊。 (注意,我知道需要一個像magic()這樣的函數是有問題的,但它我想要的。)

+0

*「但這是我想要的」* - 爲什麼?你究竟在嘗試用這個**來實現**?爲什麼我必須爲你Google? – jonrsharpe

+0

現在我發現這是一個重複的問題,我倒下了對問題的贊成。 – rmunn

回答

0

實際上,這是不可能的。在Python中,名稱和值非常獨立。裏面f,您可以訪問x,但是不可能找出其他名其他什麼功能有可能給該值。

認爲名稱有點像C中的指針。如果你有一個指針,你可以找出它指向的對象。但是如果你有這個對象,你不能找出指向它的指針。

+0

你可能*不應該*,但它是可能的。 – jonrsharpe

+0

@jonrsharpe - 如何?即使有堆疊詭計......哦,等等。也許這是可能的,如果你然後通過引用平等將每個調用堆棧的名稱與'x'進行比較。呃,這將是一個醜陋的黑客。 – rmunn

+0

是的,它不是很漂亮。 – jonrsharpe

相關問題