亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

誰能把代碼逐行解析一下?

import time

def performance(f):

? ? def fn(*args,**kw):

? ? ? ? t1 = time.time()

? ? ? ? r = f(*args, **kw)

? ? ? ? t2 = time.time()

? ? ? ? print 'call %s() in %fs' % (f.__name__, (t2 - t1))

? ? ? ? return r

? ? return fn

@performance

def factorial(n):

? ? return reduce(lambda x,y: x*y, range(1, n+1))

print factorial(10)


正在回答

2 回答

先定義了一個裝飾器performance:

? ? ?在其中定義一個函數fn:先記錄運行前的時間t1,然后用r先讓函數運行,在記錄運行后的時間t2,之后輸出相應信息(f.__name__輸出調用裝飾器的函數名稱:factorial)

最后調用裝飾器,函數factorial返回值為10的階乘,輸出函數返回值同時輸出裝飾器返回值

? ? ? ? ??

4 回復 有任何疑惑可以回復我~

有沒有大神解答一下,裝飾器里的 r = f(*args,**kw), 我知道參數是傳進來了,但是 f函數不是沒定義嗎,那這個計算的時間差值還是函數factorial運行的時間嗎?? 0.0

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

誰能把代碼逐行解析一下?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號