gpt4 book ai didi

python - 调试方法返回 None

转载 作者:太空狗 更新时间:2023-10-29 18:02:45 26 4
gpt4 key购买 nike

我有一个很大的遗留 Python 方法,其中包含大约二十个 return声明。

该方法不应返回 None但它确实如此。它在简单的测试用例中是可重复的。

到目前为止,我使用调试器并逐行调试代码以找到匹配的返回语句。

但是有没有更简单的方法呢?

有没有办法在方法返回 None 时立即引发异常?

当然,我需要查看包含返回语句的行。

例子:

def big_method(arg1, some_var):
#.... many returns
if arg1:
return some_var # <------
#... many returns


assert not big_method(True, None) is None

上面是一个简单的代码片段。结果:

Traceback (most recent call last):
File "/home/modwork_vums_d/src/manyreturns.py", line 8, in <module>
assert not big_method(True, None) is None
AssertionError

上面的回溯并没有多大帮助,因为我想看到 inside big_method() 行.在上面的示例中,我想看看我用 <------ 标记的是哪个.

我使用 PyCharm,但欢迎使用纯 Python 或其他解决方案。

仅作记录。有一个后续问题试图在 PyCharm 中启用此功能:PyCharm: Debugging: r(eturn) Continue execution until the current function returns

最佳答案

pdb 有一个 r(eturn) 命令来满足这个需求:

r(eturn) Continue execution until the current function returns.

例子:

> /Users/georgexsh/wasteland/tmp/app.py(6)<module>()
-> assert not big_method(True, None) is None
(Pdb) s
--Call--
> /Users/georgexsh/wasteland/tmp/app.py(1)big_method()
-> def big_method(arg1, some_var):
(Pdb) r
--Return--
> /Users/georgexsh/wasteland/tmp/app.py(3)big_method()->None
-> return some_var

pdb doc 中查看更多详细信息.

关于python - 调试方法返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com