我有一个大的旧python方法,其中大约包含二十个 return
语句。
该方法不应返回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
上面的追溯没有帮助,因为我想在 big_method()
中看到行。在上面的示例中,我想看看我用<------
标记了哪个。
我使用pycharm,但欢迎纯python或其他解决方案。
仅用于记录。有一个后续问题试图在Pycharm中启用此功能:Pycharm:调试:R(Eturn)继续执行,直到当前功能返回
pdb具有以下需要的 r(eturn)
命令:
r(eturn) 继续执行直到当前功能返回。
示例:
> /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文档中的更多详细信息