美文网首页
python装饰器何时执行?

python装饰器何时执行?

作者: KillerManA | 来源:发表于2017-07-09 17:37 被阅读322次

python装饰器,使用python作为开发的小伙伴一定不会陌生,但是有没有思考过装饰器的执行原理及过程呢?下面我们来分析分析装饰器的特性及执行过程

装饰器有什么特性?
1.能把被装饰的函数替换成其它函数
这个我们经常用到应该都是知道的

2.装饰器在加载模块时立即执行
这个特性注意的不是特别多,我们来说一下这个,先看代码

registry = []


def register(func):
    print('running register({})'.format(func))
    registry.append(func)
    return func


@register
def f1():
    print('running f1')


@register
def f2():
    print('running f2')


def f3():
    print('running f3')

if __name__ == '__main__':
    print('running main')
    print('registry --> {}'.format(registry))
    f1()
    f2()
    f3()

结果:

running register(<function f1 at 0x10b2532f0>)
running register(<function f2 at 0x10b253620>)
running main
registry --> [<function f1 at 0x10b2532f0>, <function f2 at 0x10b253620>]
running f1
running f2
running f3

Process finished with exit code 0

从结果可以看出,装饰器在执行main函数之前就已经运行了,但是被装饰的函数只有在调用时才能运行。

相关文章

  • python装饰器何时执行?

    python装饰器,使用python作为开发的小伙伴一定不会陌生,但是有没有思考过装饰器的执行原理及过程呢?下面我...

  • python 装饰器的使用详解

    注意事项 何时执行装饰器函数装饰器在导入模块时立即执行,而被装饰的函数只在明确调用时运行。这突出了 Python ...

  • python3基础---详解装饰器

    1、装饰器原理 2、装饰器语法 3、装饰器执行的时间 装饰器在Python解释器执行的时候,就会进行自动装饰,并不...

  • python语言之三:python装饰器

    不带参数的装饰器 python装饰器也是python解释器下的一颗语法糖。形式上如下: 接着解释器出马了,执行my...

  • Python 装饰器执行顺序迷思

    探究多个装饰器执行顺序 装饰器是Python用于封装...

  • Python - 学习理解带参数的装饰器

    理解带参数的装饰器 参考文章 Python精进-装饰器与函数对象 加了装饰器这段代码从一个函数定义(不会执行任何东...

  • lru_cache装饰器的作用

    python lru_cache装饰器的作用 ru_cache装饰器实现了备忘功能,能够优化函数执行速度,他把耗时...

  • python 装饰器执行顺序

    先上代码和效果 输出: 执行步骤详解: 定义阶段 定义wrapper_a 定义wrapper_b 进入wrappe...

  • Python装饰器9-函数装饰器的应用

    函数装饰器应用场景-权限验证 执行结果: 小结 Python装饰器在Flask中一个典型的应用场景就是权限验证

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

网友评论

      本文标题:python装饰器何时执行?

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