在没有中间变量的情况下,如何在Python调试器中看到函数的返回值?

在没有中间变量的情况下,如何在Python调试器中看到函数的返回值?,python,debugging,Python,Debugging,PDB(和其他Python调试器)有一种查看任何当前变量值的简单方法,只需输入它即可。但是,有时我使用的库不将返回值存储在中间变量中 下面是一个示例函数: def do_stuff(*args, **kwds): return f(*args, **kwds) 从f返回后,如何查看返回值?我可以在下载库后重写它们,以获得一个中间版本: def do_stuff(*args, **kwds): r = f(*args, **kwds) return r 但似乎应该

PDB(和其他Python调试器)有一种查看任何当前变量值的简单方法,只需输入它即可。但是,有时我使用的库不将返回值存储在中间变量中

下面是一个示例函数:

def do_stuff(*args, **kwds):
     return f(*args, **kwds)
从f返回后,如何查看返回值?我可以在下载库后重写它们,以获得一个中间版本:

def do_stuff(*args, **kwds):
     r = f(*args, **kwds)
     return r
但似乎应该有更好的办法。

你能解释更多吗

  • 通过调试器,您的意思是您正在使用记录器吗?您是否正在使用IDE
  • “查看返回值”是什么意思?如果你只是想把它打印出来

    def do_stuff(*args, **kwds):
        result = f(*args, **kwds)
        print result
        return result
    

在pdb中,当函数返回一个
->“值”时,
被添加到行的末尾,表示返回的值

例如:

(Pdb) s
--Return--
> test.py(12)do_stuff()->'f'
-> return result
(Pdb) q

意思是
do\u stuff()
返回的
'f'
您可以查看隐藏的
\uu返回的局部变量

如果我忘记了它的确切名称,我将通过以下方式来探索它:

(Pdb) sorted(locals().keys())
['__return__', 'xyz', ...]

编辑:与

相关的后续答案目前情况下,
f
的返回值也将是
do\u stuff
的返回值。您可以查看它,或者将其更改为类似
r=f(…);印刷品(r);return r
——不过,我觉得你的问题比这更复杂。你能澄清一下吗?这实际上是主要问题;有没有一种方法可以在没有中间值的情况下查看该值?要在PyCharm中使用此功能,请投票支持PyCharm中刚刚修复的功能,并应在下一版本(2016.2)中提供。我有PyCharm 2016.2,但不清楚如何查看返回值,我也没有在文档中看到它。如果我理解正确,返回前的一步将显示返回值,对吗?这在Eclipse的实现中有效吗?不,它实际上是在函数返回时发生的。我不确定Eclipse实现是否应该使用pdb(标准库中的调试器)。这并不总是有用的,特别是当返回值为long或object时。我使用的是Eclipse,如果可能的话,我希望避免使用这种中间代码。谢谢酷,谢谢!我必须看看这在Eclipse中是否有效,但我认为它默认使用PDB…我还发现了一个PDB命令
retval
,但我认为如果返回值是一个无法详细打印的复杂对象,“return”更通用、更有用。