2013-04-25 79 views
1

我得到了這個錯誤:ValueError: need more than 2 values to unpack並被拋出到一個pdb提示符(實際上,ipdb>)。它發生的計算是非常昂貴的,我不想重複它。pdb:從「需要多個X值才能解包」恢復數據?

函數調用看起來像:

x,y,z = f(q) 

有沒有辦法恢復的內容f(q)打算返回,因爲我仍然有一個活pdb會議?

編輯:澄清,f(q)是非常計算昂貴,不能重複。

回答

1
>>> def func():x,y,z=f() 
... 
>>> import dis 
>>> dis.dis(func) 
    1   0 LOAD_GLOBAL    0 (f) 
       3 CALL_FUNCTION   0 
       6 UNPACK_SEQUENCE   3 
       9 STORE_FAST    0 (x) 
      12 STORE_FAST    1 (y) 
      15 STORE_FAST    2 (z) 
      18 LOAD_CONST    0 (None) 
      21 RETURN_VALUE 

尋找如何拆包工作,它看起來像錯誤是在UNPACK_SEQUENCE步提高,存儲任何值之前表示,所以我想你不能恢復返回的值。

+0

澄清:我明白究竟是什麼導致了'Exception',並且確切地知道如何解決它,但是我需要知道我是否可以對可能在內存中某處徘徊的數據執行任何操作,而不分配給任何變量。 – keflavich 2013-04-25 22:11:07

+0

@keflavich帶有零引用的任何對象都會自動在python中進行垃圾收集。 – 2013-04-25 22:13:47

+0

感謝您指出'dis',這很有用。我希望有一些隱藏的變量參考,例如一些神奇的解包器迭代器,但我懷疑不是。 – keflavich 2013-04-25 22:27:57

0

您應該能夠發出一個簡單的print語句:

print f(q) 
相關問題