装饰除了块没有任何变化

时间:2016-01-07 08:12:43

标签: python decorator

现有代码包含许多except块,可以抑制异常。

def div(x, y):
    result = None
    try:
        result = x / y
    except:
        pass
    return result


print div(5,0)

我想装饰except块,以便在不更改原始代码的情况下打印异常。这在Python中是否可行?

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。

在Python中,只有对象可以被装饰。

尝试/除了块是compound statements之一。语句不能用作参数 - 因此你不能写这样的装饰器。

此外,如果异常被静音,装饰器(或语句之外的任何其他代码)将不知道引发异常的事实。