如何在python中打印变量名?假设我有一个名为choice它的变量等于2.我如何访问变量的名称?相当于的东西In [53]: namestr(choice)Out[53]: 'choice'用于制作字典。有一个很好的方法来做到这一点,我只是错过了它。编辑:因此,这样做的原因。我正在运行一些数据分析的东西,我在程序中调用了多个参数,我想在运行时调整或不调整。我读了我在上一次运行中使用的参数,从.config文件格式化为filename
no_sig_resonance.dat
mass_peak700choice1,2,3当提示输入值时,将显示先前使用的值,空字符串输入将使用先前使用的值。我的问题是因为在写字典时已经扫描了这些值。如果需要一个参数,我运行get_param访问文件并找到参数。我想我会通过阅读来避免这个问题。config提交一次并从中生成字典。我原本避免了这个......我不再记得的原因。更新我的代码的完美情况!
3 回答

红糖糍粑
TA贡献1815条经验 获得超6个赞
如果你坚持,这里有一些可怕的基于检查的解决方案。
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)
我希望它会激励你重新评估你的问题并寻找另一种方法。

倚天杖
TA贡献1828条经验 获得超3个赞
回答你原来的问题:
def namestr(obj, namespace): return [name for name in namespace if namespace[name] is obj]
例:
>>> a = 'some var'>>> namestr(a, globals())['a']

一只甜甜圈
TA贡献1836条经验 获得超5个赞
你不能,因为Python中没有变量而只有名称。
例如:
> a = [1,2,3]> b = a> a is bTrue
这两个中的哪一个现在是正确的变量?a
和之间没有区别b
。
之前有一个类似的问题。
添加回答
举报
0/150
提交
取消