Python语言多个装饰器的执行顺序

#1.定义两个装饰函数,分别给字体进行加粗和倾斜的标签。
def makeBold(fn):
    print("BBBBB"*5)
    def wrapped1():   #注意为了演示结果这里讲wrapped函数,分为wrapped1,wrapped2
        print("bbbbb"*5)
        return "<b>" + fn() + "</b>"
    return wrapped1
 
def makeItalic(fn):
    print("IIIII"*5)
    def wrapped2():     #注意为了演示结果这里讲wrapped函数,分为wrapped1,wrapped2
        print("iiiiii" *3)
        return "<i>" + fn() + "</i>"
    return wrapped2
 
#2.使用两个装饰器同时装饰一个函数,可以三个,甚至多个。原理一样
@makeBold   #注意2.其效果等同于test_B_I=makeBold( makeItalic(test_B_I) )
@makeItalic #注意1.其效果等同于test_B_I=makeItalic(test_B_I)
def test_B_I():   
    print("test_B_I"*5)
    return "this is the test_B_I"

关于多个装饰器修饰一个函数总结要点:


1.当一个函数被多个装饰器装饰时,装饰器的加载顺序是从下往上的(从内到外的)。其实很好理解:装饰器是给函数装饰的,所以要从靠近函数的装饰器开始从下往上加载


2.上一行的装饰器,是由下一行装饰器装饰后的结果进行装饰。


支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论