day 12 python的裝飾器

2022-08-24 05:27:11 字數 1885 閱讀 5254

1·裝飾器

①裝飾器的作用:在不改變函式的基礎上,在函式的前後新增新的功能

②使用原則:開放封閉原則(開放:對擴充套件時開放的;封閉:對修改是封閉的)

2·語法糖:@裝飾函式

3·本節涉及的庫:time   (import time)

print(time.tim())#獲取當前時間

print(time.sleep(時間間隔))  #讓程式在執行到這裡的時候停一會兒s

裝飾器的固定模式:

例:import time

def timmer(f):     #裝飾器函式  ,f為被裝飾函式

def inner( ):

start = time.time()

ret = f( )

end = time.time()

return ret

return inner

@timmer    #語法糖,裝飾器函式的呼叫方法   func= timmer(func)-->inner

def func():    #被裝飾函式

time.sleep(0.1)

print('博主真帥!')

return '無與倫比' 

帶有引數的裝飾器函式:

import time

def timmer(f):     #裝飾器函式

def inner(*args,**kwargs):

start = time.time()

ret = f(*args,**kwargs)

end = time.time()

return ret

return inner

@timmer    #語法糖,裝飾器函式的呼叫方法   func= timmer(func)-->inner

def func(a,b):    #被裝飾函式

time.sleep(0.1)

print('博主真帥!')

return '無與倫比' 

需要理解裝飾函式的在程式中的執行順序:

裝飾器的高階:(函式的停止呼叫,及三層函式)

當存在多個引數時,500個函式的時候,如何停止函式的呼叫

import time

flage = true

def timmer(f):

def inner(*args,**kwargs):

if flage:

start =time.time()

ret  = f(*args,**kwargs)

end = time.time()

print(end-start)

return ret

else:

ret = f(*args,**kwargs)

print(『函式在這裡:』)

return inner

return timmer 

def func(a.c):

rtime.sleep(0.3)

print('11')

func(1,2)

多個函式裝十乙個函式:

def inner1():

ret = f()

return inner1

def inner2():

ret = f()

return inner2

def inner3():

ret = f()

return inner3

#三個裝飾器的使用順序,先執行最接近被裝飾的那個裝飾器

def func():

print('niubi')

func()  #-->inner3()-->inner2()-->inner1()

#應用:

可應用於記錄使用者的來訪情況

計算這個函式的執行時間

python學習day12 裝飾器高階

裝飾器的高階 functools.wraps 帶引數的裝飾器 多個裝飾器裝飾同乙個函式 裝飾器 開發原則 開放封閉原則 裝飾器的作用 在不改變原函式的呼叫方式的情況下,在函式的前後新增功能 裝飾器的本質 閉包函式 def inner args,kwargs print 在被裝飾的函式執行之前做的事 ...

day12 作業裝飾器

寫乙個裝飾器 tag要求滿足如下功能 def tag name def test func def new func args,kwargs result func args,kwargs return f return new func return test tag name p defrend...

day12 裝飾器高階

day12 裝飾器高階 裝飾器高階 functools.wraps 帶引數的裝飾器 多個裝飾器裝飾用乙個函式 def outer args,kwargs 接收的時候是聚合 成元祖的形式 print args print args def inner args print inner args inn...