2017-10-19 74 views

回答

2

可以使用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) 
+1

感谢您的详细解答! –

2

您可以使用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 
+0

谢谢,但我得到一个错误。我复制并粘贴了精确的代码,它给出:传递值的形状是(30,2),索引暗示(30,1) –