python変数名を同名文字列に変換する方法

1623 ワード

これはつまらない考えですが、
例えば、a=123
印刷すると、「a:3」はどのようにして手動でaという文字列を入力しないのでしょうか.
見知乎:https://www.zhihu.com/question/42768955
そしてstackoverflow:https://stackoverflow.com/questions/592746/how-can-you-print-a-variable-name-in-python
プロセスは次のとおりです.
import inspect, 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)

if __name__ == '__main__':
  spam = 42
  print (varname(spam))


結局spamの4文字を印刷しました