美文网首页
@修饰符

@修饰符

作者: wcmoon | 来源:发表于2019-11-28 18:47 被阅读0次

    话不多说先上代码,简单粗暴解释用法

    def a(fun):
        fun()
    
    
    @a
    def fn():
        print(12)
    

    执行以上代码,得到输出

    12
    

    这里解释了@解释器的用法,即将函数作为修饰器函数的参数传入。

    尝试了一下使用两个修饰器的情况,使用方法如下

    def a(fun):
        print('a')
        fun()
        return fun
    
    
    def b(fun):
        print('b')
        fun()
    
    
    @b
    @a
    def fn():
        print(12)
    

    输出为

    a
    12
    b
    12
    

    尝试到这里,会很自然想到为什么需要@修饰符的存在,因为本身 python 的函数就可以将函数作为参数传入,比如将第一个例子改为如下代码:

    def a(fun):
        fun()
    
    
    def fn():
        print(12)
    
    
    a(fn)
    

    查了一些资料,原因应该和 aop 的思想有关,没有深究,埋个坑,有时间了深挖。

    相关文章

      网友评论

          本文标题:@修饰符

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