当解包值过多时如何访问函数的返回值

2 投票
1 回答
39 浏览
提问于 2025-04-14 16:18

有时候,我在编写代码时会犯错,比如函数返回的值和预期的不匹配。例如:

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)

所以你无法找回它们。

撰写回答