1. 程式人生 > >python學習日記:day11-----裝飾器

python學習日記:day11-----裝飾器

spa bsp 就是 時間 裝飾 原則 老板 args 函數名

1,time模塊

import time
print(time.sleep())#讓程序在執行到這個位置到時候停一會
print(哈哈哈)

獲取當前時間
import time
time.time()#獲取當前時間

一個函數的執行時間:

def func():
    start =time.time()
    print(啊哈哈哈哈哈)    
    time.sleep(0.01)
    end =time.time()
    print(end-start)
func()

裝飾器

import 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()

裝飾器的作用 #不想修改函數的調用方式,但是還想在原來的函數前後添加功能 #timmer就是一個裝飾器函數,只是對一個函數有一些裝飾作用。 開放封閉原則 #開放:對拓展是開放的 #封閉:對修改是封閉的 語法糖
import
time print(time.time()) # 獲取當前時間 time.sleep(10) #讓程序在執行到這個位置的時候停一會兒 def timmer(f): #裝飾器函數 def inner(): start = time.time() ret = f() #被裝飾的函數 end = time.time() print(end - start) return ret return inner @timmer #語法糖 @裝飾器函數名# func = timmer(func)
def func(): #被裝飾的函數 time.sleep(0.01) print(老板好同事好大家好) return 新年好 ret = func() #inner() print(ret)
裝飾帶參數函數的裝飾器
def timmer(f):    #裝飾器函數
    def inner(*args,**kwargs):
        start = time.time()
        ret = f(*args,**kwargs)  #f(1,2)       #被裝飾的函數
        end = time.time()
        print(end - start)
        return ret
    return inner

@timmer         #語法糖 @裝飾器函數名
def func(a,b):     #被裝飾的函數
    time.sleep(0.01)
    print(老板好同事好大家好,a,b)
    return 新年好
ret = func(1)   #inner()
print(ret)

裝飾器函數格式:

def wrapper(f):    #裝飾器函數,f是被裝飾的函數
    def inner(*args,**kwargs):
        ‘‘‘在被裝飾函數之前要做的事‘‘‘
        ret = f(*args,**kwargs)    #被裝飾的函數
        ‘‘‘在被裝飾函數之後要做的事‘‘‘
        return ret
    return inner

@wrapper         #語法糖 @裝飾器函數名
def func(a,b):     #被裝飾的函數
    time.sleep(0.01)
    print(老板好同事好大家好,a,b)
    return 新年好

python學習日記:day11-----裝飾器