2013-07-11 79 views
0

這將是非常有用的調試,有一個像這樣的功能:如何編寫一個可以打印其參數名稱和值的函數?

a = np.arange(20) 
debug_print(a) 

上述應打印

variable: a 
val: [...] 

非常感謝。

+0

您試圖在*調用框架打印變量的名稱*。該函數本身將爲該參數設置一個*不同的名稱。你想要做的是相當麻煩的。沒有足夠的價值? –

+0

我有一個半打中間步驟的功能。知道正在打印哪個變量將非常有幫助,而不必每次都打印「var」,var。 – Karthick

+1

你也許可以把某些東西弄成一團糟 - http://docs.python.org/2/library/inspect.html – YXD

回答

1

嘗試下面的代碼:

import inspect 
import re 

def debug_print(*args): 
    lines = ''.join(inspect.stack()[1][4]) 
    matched = re.search('debug_print\((.*?)\)', lines).group(1) 
    names = map(str.strip, matched.split(',')) 
    for name, value in zip(names, args): 
     print('{} = {}'.format(name, value)) 

a = 1 
b = 2 
debug_print(a, b) 
debug_print('a') 
debug_print('a,aa') # Not work well for this case. 
相關問題