在python中从堆栈跟踪中删除调用

在python中从堆栈跟踪中删除调用,python,recursion,stack-trace,Python,Recursion,Stack Trace,我使用的递归函数不是直接调用自身,而是通过其他私有方法,例如: def recur(x): # do something __a(x) def __a(x): # do something __b(x) def __b(x): if (something): recur(x-1) 每当在“recur”中发生异常时,stacktrace就会打印私有方法“\u_a”和“\u_b”的所有调用。 这是一个真正的redundent,因为这些函数

我使用的递归函数不是直接调用自身,而是通过其他私有方法,例如:

def recur(x):
    # do something
    __a(x)

def __a(x):
    # do something
    __b(x)

def __b(x):
    if (something):
        recur(x-1)
每当在“recur”中发生异常时,stacktrace就会打印私有方法“\u_a”和“\u_b”的所有调用。 这是一个真正的redundent,因为这些函数只为我的写作选择而存在,这使得跟踪更难理解


如何从回溯中省略内部方法的调用?

我不鼓励在python中从堆栈跟踪中省略信息。也就是说,我建议您看看,因为它几乎包含了实现您自己的版本所需的所有代码。您为什么要这样做?此外,Python没有“私有”方法。Python是一种成人语言。您的回溯更难理解的核心原因是您试图隐藏函数。通过改变回溯,您没有帮助任何人。@sytech创建函数“\uuuu a”和“\uuu b”只是一个随机选择,以使我的代码更易于编写。我可以删除这些函数,然后在“recur”中写入所有内容,然后跟踪看起来就像我想要的那样。现在跟踪的长度增加了3倍,因为没有人会阅读它。+1,因为这可以应用于函数装饰器,你不想在stacktrace中污染它。我的例子是
@logExceptions
,它只记录一个异常并引发它。