Discuss / Python / 装饰器

装饰器

Topic source

import time, functools

def metric(fn):

    @functools.wraps(fn)

    def wrapper(*args,**kw):

        start=time.time()

        fn(*args,**kw)

        end=time.time()

        print('%s executed in %s ms' % (fn.__name__, end-start))

        return fn(*args,**kw)

    return wrapper

import functools

def log(fn):

    @functools.wraps(fn)

    def wrapper(*args,**kw):

        print('%s() begin call'%(fn._name_))

        fn(*args,**kw)

        print('%s() begin call'%(fn._name_))

        return fn(*args,**kw)

    return wrapper

import functools

def log(text):

    if isinstance(text,str):

        def decorator(func):

            @functools.wraps(func)

            def wrapper(*args,**kw):

                print("%s %s():" %(text,func.__name__))

                return func(*args,**kw)

            return wrapper

        return decorator    

    else:

        def decorator(func):

            def wrapper(*args,**kw):

                print("%s():" %func.__name__)

                return func(*args,**kw)

            return wrapper

        return decorator


  • 1

Reply