亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中打印變量名?

如何在python中打印變量名?

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

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超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)

我希望它會激勵你重新評估你的問題并尋找另一種方法。


查看完整回答
反對 回復 2019-07-24
?
MM們

TA貢獻1886條經驗 獲得超2個贊

回答你原來的問題:

def namestr(obj, namespace):
    return [name for name in namespace if namespace[name] is obj]

例:

>>> a = 'some var'>>> namestr(a, globals())['a']


查看完整回答
反對 回復 2019-07-24
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

你不能,因為Python中沒有變量而只有名稱。

例如:

> a = [1,2,3]> b = a> a is bTrue

這兩個中的哪一個現在是正確的變量?a和之間沒有區別b。

之前有一個類似的問題。


查看完整回答
反對 回復 2019-07-24
  • 3 回答
  • 0 關注
  • 3989 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號