美文网首页
装饰器的使用

装饰器的使用

作者: 入间 | 来源:发表于2018-06-30 20:37 被阅读0次
    1. 函数带多个参数

    普通的装饰器, 打印函数的运行时间

    def decrator(func):
        def wrap(*args, **kwargs):
            start_time = time.time()
            res = func(*args, **kwargs)
            end_time = time.time()
            print('运行时间为', end_time-start_time)
            return res
        return wrap
    
    1. 装饰器带有多个参数
      当装饰器带有多个参数的时候, 装饰器函数就需要多加一层嵌套:

    比如:

    def decrator(*dargs, **dkargs):
        def wrapper(func):
            def _wrapper(*args, **kargs):
                print ("装饰器参数:", dargs, dkargs)
                print ("函数参数:", args, kargs)
                return func(*args, **kargs)
            return _wrapper
        return wrapper
    

    为什么被装饰函数体可以传入内层呢?

    装饰器函数有多个参数, 需要以@decrator(1, a=2)的方式使用, 这时候decrator是已经执行的(因为加了括号), 可以粗略的理解为加载被装饰函数的上的是wrapper, 所以这和普通的装饰器并无差别.

    相关文章

      网友评论

          本文标题:装饰器的使用

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