—super—

博客园 首页 新随笔 联系 订阅 管理
  105 随笔 :: 0 文章 :: 0 评论 :: 32238 阅读

有参装饰器

复制代码
def outer(flag):
    def timer(func):
        def inner(*args,**kwargs):
            if flag:
                print('''执行函数之前要做的''')
            re = func(*args,**kwargs)
            if flag:
                print('''执行函数之后要做的''')
            return re
        return inner
    return timer

@outer(False)
def func():
    print(111)

func()
复制代码

多个装饰器装饰同一个函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def wrapper1(func):
    def inner():
        print('wrapper1 ,before func')
        func()
        print('wrapper1 ,after func')
    return inner
 
def wrapper2(func):
    def inner():
        print('wrapper2 ,before func')
        func()
        print('wrapper2 ,after func')
    return inner
 
@wrapper2
@wrapper1
def f():
    print('in f')
 
f()

  

posted on   —super—  阅读(140)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示