2017-10-19 71 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) –