使用多个装饰器,9returnres


2022-09-18

多个装饰器使用的实例:

 1 # 定义一个装饰器
 2 def make_p(func):
 3     print("执行装饰器make_p")
 4 
 5     def inner():
 6         # 对已有函数增加新的功能
 7         result = "<p>" + func() + "</p>"
 8         # 和已有函数保持一致,如果已有函数有返回值,则这里也加上返回值;如果已有函数有参数,那么这里也加上参数。
 9         return result
10 
11     return inner
12 
13 # 定义第二个装饰器
14 def make_div(func):
15     print("执行装饰器make_div")
16     
17     def inner():
18         # 对已有函数增加新的功能
19         result = "<div>" + func() + "</div>"
20         # 和已有函数保持一致,如果已有函数有返回值,则这里也加上返回值;如果已有函数有参数,那么这里也加上参数。
21         return result
22 
23     return inner
24 
25 # 设置装饰器语法糖
26 @make_div
27 @make_p
28 # 原来的函数
29 def content():
30     return "人生苦短,我用python!"
31 
32 if __name__ == '__main__':
33     result = content()
34     print(result)

运行的结果如下:

 

   由结果图可知,多个装饰器同时使用,会先执行内部函数,离原来函数距离最近的装饰器,之后,再执行外层的装饰器。

评论关闭