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]

使用:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 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']

你可能需要一下辅助函数:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def pv(var, var_name):
    """ print 变量的名字及type、及其值 """
    print("%s : %s; value: " % (var_name, type(var).__name__))
    print(var)


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

使用方法:

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

你可能感兴趣的:(python 自动获取(打印)代码中的变量的名字字符串)