Discuss / Python / homework

homework

Topic source

作业1:

#设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:
import time,functools

def metric(fn):
    @functools.wraps(fn)
    def wrapper(*args,**kw):
        s_time = time.time()   #记录开始时间
        f = fn(*args,**kw)   #开始执行函数 (f = func是换名字,f = func()为执行右侧函数)
        e_time = time.time()  #记录结束时间
        print('%s  excuted in %s ms'%(fn.__name__,e_time-s_time))
        return f
    return wrapper

作业2:

import functools

def log(fn):
    if callable(fn):       #判断fn是否为函数,若为函数:
        @functools.wraps(fn)
        def decorator(*args,**kw):
            print("begin call")
            start1 = fn(*args,**kw)   #执行函数
            print("end call")
            return start1     #只有return fn(*args,**kw)才会执行函数
        return decorator
    
    else:                           #判断fn是否为函数,若不是函数:
        def wrapper(func):
            @functools.wraps(func)
            def decorator(*args,**kw):
                print("begin call")
                start2 = func(*args,**kw)   #执行函数
                print("end call")
                return start2
            return decorator
        return wrapper
        

  • 1

Reply