如何在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)
我希望它会激励你重新评估你的问题并寻找另一种方法。

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']
添加回答
举报
0/150
提交
取消