自學Python之路-Python基礎+模塊+面向對象
自學Python之路-Python網絡編程
自學Python之路-Python併發編程+數據庫+前端
自學Python之路-djangohtml
time.time() # 獲取當前時間 time.sleep(10) #讓程序在執行到這個位置的時候停10s
代碼1:前端
import time print(time.time()) def func(): # 被裝飾的函數 start = time.time() # 獲取開始的時間 print('我好喜歡你們啊 ~~') # 測試時間的代碼 end = time.time() print(end-start) func()
代碼2:
因爲執行代碼的速度太快,沒有體現出來結果,這是可使用 time.sleep(10) 加大代碼執行的時間。python
import time print(time.time()) def func(): # 被裝飾的函數 start = time.time() # 獲取開始的時間 print('我好喜歡你們啊 ~~') # 測試時間的代碼 time.sleep(0.01) end = time.time() print(end-start) func()
代碼3: 數據庫
爲了讓函數func()徹底分離出來,如今定義一個新函數timmer(),主要用於計算函數的執行時間(開始的時間,結束時間,執行的函數)django
import time print(time.time()) def func(): # 被裝飾的函數 time.sleep(0.01) print('我好喜歡你們啊 ~~') # 測試時間的代碼 def timmer(func): #裝飾函數 start = time.time() # 獲取開始的時間 func() end = time.time() print(end-start) timmer(func) #執行timmer,並且是執行參數func的函數
代碼4: 裝飾器編程
其實上面的例子,真正環境下是存在問題的。 應該最終調用func(), 最好調用func()時候實質是調用timmer()緩存
函數的閉包定義:網絡
在函數內部再定義一個函數,而且這個函數用到了外邊函數的變量,那麼將這個函數以及用到的一些變量稱之爲閉包。閉包
裝飾器本質上就是一個python閉包函數,他可讓其餘函數在不須要作任何代碼變更的前提下,增長額外的功能,裝飾器的返回值也是一個函數對象。併發
裝飾器的應用場景:好比插入日誌,性能測試,事務處理,緩存等等場景。
import time print(time.time()) def func(): time.sleep(0.01) print('我好喜歡你們啊 ~~') def timmer(f): #裝飾器函數 def inner(): start = time.time() f() #被裝飾的函數 end = time.time() print(end - start) return inner func = timmer(func) func() # 其實執行的是inner()
import time
print(time.time())
def timmer(f): #裝飾器函數
def inner():
start = time.time()
f()
end = time.time()
print(end - start)
return inner
@timmer #語法糖 @裝飾器的函數 ,至關於func = timmer(func)
def func(): #被裝飾的函數
time.sleep(0.01)
print('我好喜歡你們啊 ~~')
func()