当解包值过多时如何访问函数的返回值
有时候,我在编写代码时会犯错,比如函数返回的值和预期的不匹配。例如:
def f():
return a1, a2, a3
a1, a2 = f()
当我调用 f() 函数时,它可能需要很长时间才能运行完成,但一旦结束,就会出现“值太多,无法解包”的错误。这样我就得修改代码,然后再花很长时间重新运行。
有没有办法在出现错误时(在 Python 会话中或者在调试器中)访问 f() 的返回值,这样我就不用再重新运行了?
谢谢。
1 个回答
3
这些对象并没有被保存到任何地方。我们可以用一个简单的 __del__
方法来演示这一点:
>>> class PrintOnDel:
... def __del__(self):
... print('deleting')
...
>>> def f():
... return PrintOnDel(), PrintOnDel(), PrintOnDel()
...
>>> x, y = f()
deleting
deleting
deleting
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
所以你无法找回它们。