我正在进行python shell中的计算.我想要的是Matlab样式列表输出,你可以看到所有已经定义到一个点的变量(所以我知道我使用了哪些名称,它们的值等等).
有办法吗,我该怎么做?
假设我有一个名为choice它的变量等于2.我如何访问变量的名称?相当于的东西
In [53]: namestr(choice)
Out[53]: 'choice'
Run Code Online (Sandbox Code Playgroud)
用于制作字典.有一个很好的方法来做到这一点,我只是错过了它.
编辑:
因此,这样做的原因.我正在运行一些数据分析的东西,我在程序中调用了多个参数,我想在运行时调整或不调整.我读了我在上一次运行中使用的参数,从.config文件格式化为
filename
no_sig_resonance.dat
mass_peak
700
choice
1,2,3
Run Code Online (Sandbox Code Playgroud)
当提示输入值时,将显示先前使用的值,空字符串输入将使用先前使用的值.
我的问题是因为在写字典时已经扫描了这些值.如果需要一个参数,我运行get_param访问文件并找到参数.
我想我会通过阅读来避免这个问题.config提交一次并从中生成字典.我原本避免了这个......我不再记得的原因.更新我的代码的完美情况!
有没有更简单的方法在Python(2.7)中执行此操作?:注意:这不是任何花哨的东西,比如将所有局部变量放入字典中.只是我在列表中指定的那些.
apple = 1
banana = 'f'
carrot = 3
fruitdict = {}
# I want to set the key equal to variable name, and value equal to variable value
# is there a more Pythonic way to get {'apple': 1, 'banana': 'f', 'carrot': 3}?
for x in [apple, banana, carrot]:
fruitdict[x] = x # (Won't work)
Run Code Online (Sandbox Code Playgroud) 我有枚举并使用变量,如myEnum.SomeNameA,myEnum.SomeNameB等.当我从函数返回其中一个变量时,我可以打印它们的名称(例如myEnum.SomeNameA)而不是它们返回的值吗?
在C/C++中,我经常发现它在调试时有用,比如定义一个宏,ECHO(x)打印出变量名及其值(即ECHO(variable)可能打印variable 7).您可以使用"字符串化操作符的宏来得到变量名#描述这里.有没有办法在Python中这样做?
换句话说,我想要一个功能
def echo(x):
#magic goes here
Run Code Online (Sandbox Code Playgroud)
如果被称为foo=7; echo(foo)(或foo=7; echo('foo')可能),将打印出来foo 7.我意识到如果我将变量及其名称都传递给函数,这样做是微不足道的,但是在调试时我会使用这样的函数,重复总是会让我感到恼火.
使用 Python 记录变量的推荐方法logging是什么,为什么更好?
旧式插值:
apple = "green"
logger.debug("apple is %s", apple)
Run Code Online (Sandbox Code Playgroud)
或者
新风格 .format()
logger.debug("apple is {}".format(apple))
Run Code Online (Sandbox Code Playgroud)
我听说插值是首选的,因为它只评估要打印的字符串,但我还没有验证它是否真的很重要。
为了调试,我经常想打印一个变量。我这样做,例如:
打印(“cat_litter”,cat_litter)
那就是我打印变量名及其值。是否可以定义一个函数来为我执行此操作,以便我可以调用诸如“printwithname(cat_litter)”之类的东西。