在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  C/ 想實(shí)現(xiàn)用裝飾器來計(jì)時(shí),空白處應(yīng)填的代碼是?

想實(shí)現(xiàn)用裝飾器來計(jì)時(shí),空白處應(yīng)填的代碼是?

# -*- coding: utf-8 -*-
import time, functools
def metric(fn):
    # 空白處
    def wrapper(*args, **kw):
        startTime = time.time()
        tmp = fn(*args, **kw)
        endTime = time.time()
        print('%s executed in %s s' % (fn.__name__, endTime - startTime ))
        return tmp
    return wrapper

為何填寫的是@funtools.wraps(fn)?

回答
編輯回答
你的瞳
需要把原始函數(shù)的__name__等屬性復(fù)制到wrapper()函數(shù)中,否則,有些依賴函數(shù)簽名的代碼執(zhí)行就會(huì)出錯(cuò)。
2018年4月20日 03:28
編輯回答
挽歌

我再解釋下joy鈺的答案,用這個(gè)裝飾器修飾函數(shù),print func.__name__是wrapper,函數(shù)的名字被改了,但是如果加了@functools.wraps(fn)這個(gè)裝飾器,print func.__name__還是函數(shù)本來的名字

2017年6月30日 21:06