猿问

如何在python中打印变量名?

如何在python中打印变量名?

假设我有一个名为choice它的变量等于2.我如何访问变量的名称?相当于的东西

In [53]: namestr(choice)Out[53]: 'choice'

用于制作字典。有一个很好的方法来做到这一点,我只是错过了它。

编辑:

因此,这样做的原因。我正在运行一些数据分析的东西,我在程序中调用了多个参数,我想在运行时调整或不调整。我读了我在上一次运行中使用的参数,从.config文件格式化为

filename
no_sig_resonance.dat

mass_peak700choice1,2,3

当提示输入值时,将显示先前使用的值,空字符串输入将使用先前使用的值。

我的问题是因为在写字典时已经扫描了这些值。如果需要一个参数,我运行get_param访问文件并找到参数。

我想我会通过阅读来避免这个问题。config提交一次并从中生成字典。我原本避免了这个......我不再记得的原因。更新我的代码的完美情况!


郎朗坤
浏览 3942回答 3
3回答

烙印99

如果你坚持,这里有一些可怕的基于检查的解决方案。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们

回答你原来的问题:def namestr(obj, namespace):     return [name for name in namespace if namespace[name] is obj]例:>>> a = 'some var'>>> namestr(a, globals())['a']

拉风的咖菲猫

你不能,因为Python中没有变量而只有名称。例如:> a = [1,2,3]> b = a> a is bTrue这两个中的哪一个现在是正确的变量?a和之间没有区别b。之前有一个类似的问题。
随时随地看视频慕课网APP

相关分类

Python
我要回答