如何在python中打印變量名?假設我有一個名為choice它的變量等于2.我如何訪問變量的名稱?相當于的東西In [53]: namestr(choice)Out[53]: 'choice'用于制作字典。有一個很好的方法來做到這一點,我只是錯過了它。編輯:因此,這樣做的原因。我正在運行一些數(shù)據(jù)分析的東西,我在程序中調(diào)用了多個參數(shù),我想在運行時調(diào)整或不調(diào)整。我讀了我在上一次運行中使用的參數(shù),從.config文件格式化為filename
no_sig_resonance.dat
mass_peak700choice1,2,3當提示輸入值時,將顯示先前使用的值,空字符串輸入將使用先前使用的值。我的問題是因為在寫字典時已經(jīng)掃描了這些值。如果需要一個參數(shù),我運行get_param訪問文件并找到參數(shù)。我想我會通過閱讀來避免這個問題。config提交一次并從中生成字典。我原本避免了這個......我不再記得的原因。更新我的代碼的完美情況!
3 回答

烙印99
TA貢獻1829條經(jīng)驗 獲得超13個贊
如果你堅持,這里有一些可怕的基于檢查的解決方案。
import inspect, redef varname(p): for line in inspect.getframeinfo(inspect.currentframe().f_back)[3]: m = re.search(r'\bvarname\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*\)', line) if m: return m.group(1)if __name__ == '__main__': spam = 42 print varname(spam)
我希望它會激勵你重新評估你的問題并尋找另一種方法。

MM們
TA貢獻1886條經(jīng)驗 獲得超2個贊
回答你原來的問題:
def namestr(obj, namespace): return [name for name in namespace if namespace[name] is obj]
例:
>>> a = 'some var'>>> namestr(a, globals())['a']
添加回答
舉報
0/150
提交
取消