python 自動獲取(打印)代碼中的變量的名字字串


方法一:

import inspect
import re
def 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)

使用:

>>> dsalds_ = 3
>>> varname(dsalds_)
'dsalds_'

 

 

方法2:

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

使用:

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

這里打印的結果是一個list,意思是有多個變量與a是同一個值時,這些變量會一起打印出來,自己試試:

>>> a = 1
>>> b = a
>>> c = 1
>>> d = 1.0
>>> namestr(a, globals())     # 除了globals(),還有 locals()
['a', 'b', 'c', '_24', '_25', '_9', '_27']

 

 

你可能需要一下輔助函數:

def pv(var, var_name):
""" print 變量的名字及type、及其值 """
print("%s : %s; value: " % (var_name, type(var).__name__))
print(var)


def ps(var, var_name):
""" print 變量的名字及typeshape """
print("%s : %s; shape: " %(var_name, var.__class__.__name__))
print(np.shape(var))

使用方法:

>>> ps(raw_data, varname(raw_data))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM