为了账号安全,请及时绑定邮箱和手机立即绑定

如何在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 关注
  • 3941 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信