【python】装饰器参数

  • 装饰器是AOP编程思想,给主体函数增加功能,又不让代码入侵到主体函数中,实现高内聚,低耦合。
  • 参数有两种,一种是功能函数带参数、另外一种是装饰器函数带参数,如果装饰功能部分代码也需要参数的话,可以在原来的两层函数外面再加一层,专门用来接收参数。
  • 下面我们通过两个小例子来学习
#功能函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间
import time
def show_time(f):
    def inner(*x):
        start = time.time()
        f(*x)
        end = time.time()
        print('speed %s'%(end-start))
    return inner

@show_time
def add(*a):
    sum = 0
    for i in a:
        sum += i
    print(sum)
    time.sleep(1)

add(1,2,3,5,6)
#装饰器函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间。另外增加一个打印日志的功能,实现功能输出日志,部分功能函数不需要输出日志
#bar调用的时候打印日志,add调用的时候不打印日志
import time
def logger(flag=''):
    def show_time(f):
        def inner(*x):
            start = time.time()
            print(start)
            f(*x)
            end = time.time()
            print(end)
            print('speed %s'%(end-start))
            if flag =='True':
                print('日志记录')
        return inner
    return show_time

@logger('True')       #bar = show_time(bar)
def bar():
    print('bar......')
    time.sleep(2)

@logger()
def add(*a):
    sum = 0
    for i in a:
        sum += i
    print(sum)
    time.sleep(1)

# add(1,2,3,5,6)
bar()
posted @ 2022-10-28 21:34  Tony_xiao  阅读(243)  评论(0编辑  收藏  举报