打印在一个Jupyter单元格中定义的所有变量
可以使用whos
命令来查看所有变量存储在当前内核中。
k, g, lx = .4, .8, 6.6
m = k*g*lx**2
whos
输出:
Variable Type Data/Info
-----------------------------
g float 0.8
k float 0.4
lx float 6.6
m float 13.939200000000001
但正如所说,它会显示所有变量,所以它会显示来自你已经运行早期细胞的其他变量。
使用locals()或globals()命令可以实现类似的结果,该命令来自python内置函数,该函数返回变量字典。但jupyter代表的方式更漂亮。您可以使用InteractiveShell。这将改变单元格的行为并像python shell一样工作,所以一旦运行它就会输出every called value(输出单元格)。
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
k
g
... do stuff ...
lx
m
... do more stuff ...
输出:
Out[2]: 0.4
Out[2]: 0.8
Out[2]: 6.6
Out[2]: 13.939200000000001
终于可以返回交互将其设置为last_expr
为默认值。
InteractiveShell.ast_node_interactivity = "last_expr"
但是你做到这一点可能是最容易和最漂亮的方式方法,你可以去除数据框的分配,使之成为一个衬垫,也可以使其更紧凑的来电:
k, g, lx, m
Out[3]: (0.4, 0.8, 6.6, 13.939200000000001)
感谢您的详细解答! –
您可以使用inspect库来尝试这样的事情。
import inspect
k = 0.0417
g = 0.829
lx = 6.6
m = k*g*lx**2
def get_name(lst=[]):
local_vars = inspect.currentframe().f_back.f_locals.items()
for i in local_vars:
lst.append(i)
return dict(lst)
import pandas as pd
df = pd.DataFrame(get_name(), index=[0])
result = df.T.loc[df.dtypes != object]
print(result)
0
g 0.829
k 0.0417
lx 6.6
m 1.50584
谢谢,但我得到一个错误。我复制并粘贴了精确的代码,它给出:传递值的形状是(30,2),索引暗示(30,1) –
您应该发布您的代码而不是图像文件。 –