美文网首页
关于装饰器括号问题

关于装饰器括号问题

作者: running_sheep | 来源:发表于2020-04-16 17:45 被阅读0次

    今天正好看到一个三层装饰器,显示方式是:@decorate(),但我记得两层的时候明明是不加括号的@decorate。有点不明白,就写了一个函数计时器的装饰器,测试一下。

    两层的时候,加了()是会报错的,因为没给参数,如下:

    那什么时候既可以加()又可以不加()呢,需要加一个判断,如下:

    这说明,如果是@time_log(),那么传入的func=None,return wrapper,func就是@time_log()下面的myfunc;如果是@time_log,那么传入的func就是下面的myfunc,那么检查myfunc是否可调用,如果可以,return wrapper(myfunc)

    相关文章

      网友评论

          本文标题:关于装饰器括号问题

          本文链接:https://www.haomeiwen.com/subject/rehdvhtx.html