2013-04-25 75 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) 
相关问题