【Python】装饰器运行报错TypeError: ‘float‘ object is not callable

今天学习时遇到一个奇怪的问题,程序可以正常跑,但是加入异常处理装饰器后,报错TypeError: 'float' object is not callable,网上没有找到很好的解决方法,经过尝试发现运行时把函数名的()去掉,可以解决。

print(try_test())

改成

print(try_test)

测试简单异常处理装饰器的完整代码如下

# python中,所有异常处理的基类为BaseException
from functools import wraps


def exp_test(fun):
    # fun是需要装饰的函数名称
    @wraps(fun)
    # 保证函数名称不会改变
    def wrapped_function(*args, **kwargs):
        try:
            result = fun(*args, **kwargs)
            print("function goes well...")
            return result
        except BaseException as errors:
            print("function has an error...")
            print(errors)
        finally:
            print("function end with logs")

    return wrapped_function()


@exp_test
def try_test():
    return 1 / 0


if __name__ == '__main__':
    print(try_test())

正常运行结果如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值