day11 裝飾器一

2022-09-05 03:57:06 字數 2868 閱讀 1616

一、裝飾器的形成

import time

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

# time.sleep(10) #讓程式在執行到這個位置的時候停一會兒

#

法一def

func():

time.sleep(0.01)

print('

mr.king')

deftimmer(f): #timmer是裝飾器函式

definner():

start =time.time()

f() #f為被裝飾的函式

end =time.time()

print(end -start)

return

inner

func =timmer(func)

func()#法二

deffunc():

time.sleep(0.01)

print('

mr.king')

deftimmer(f):

start =time.time()

f()end =time.time()

print(end -start)

timmer(func)

語法糖

def timmer(f):    #

裝飾器函式

definner():

start =time.time()

ret = f() #

被裝飾的函式

end =time.time()

print(end -start)

return

ret

return

inner

@timmer

#語法糖 @裝飾器函式名

def func(): #

被裝飾的函式

time.sleep(0.01)

print('')

return

'新年好'#

func = timmer(func)

ret = func() #

inner()

print(ret)

二、裝飾器的作用

# 裝飾器的作用 —— 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能

# timmer就是乙個裝飾器函式,只是對乙個函式 有一些裝飾作用

#

裝飾帶引數函式的裝飾器

from functools import wraps

def timmer(f): #

裝飾器函式

@wraps(func) #完美的裝飾器

def inner(*args,**kwargs):

#(1,2) /(1)

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

'新年好

'@timmer

#語法糖 @裝飾器函式名

def func1(a): #

被裝飾的函式

time.sleep(0.01)

print('

',a)

return

'新年好'#

func = timmer(func)

ret = func(1,2) #

inner()

ret = func(1,b = 2) #

inner()

print(ret)

三、原則:開放封閉原則

#   開放 : 對擴充套件是開放的

# 封閉 : 對修改是封閉的

四、裝飾器的固定模式

裝飾器函式,f是被裝飾的函式

def inner(*args,**kwargs):

'''在被裝飾函式之前要做的事

'''ret = f(*args,**kwargs) #

被裝飾的函式

'''在被裝飾函式之後要做的事

'''return

ret

return

inner

#語法糖 @裝飾器函式名

def func(a,b): #

被裝飾的函式

time.sleep(0.01)

print('

',a,b)

return

'新年好

'qqxing

def inner(*args,**kwargs):

ret = func(*args,**kwargs) #

被裝飾的函式

Python基礎 裝飾器(Day11)

裝飾器 1.裝飾器是在不改變原函式的執行的情況下為原函式增額外的功能。簡單版裝飾器 import time deffunc1 print 執行速度 deftimmer f start time time.time f time.sleep 0.3 end time time.time print 此...

Python學習之路 day 11 裝飾器

一.裝飾器相關 1.什麼是裝飾器 器 指的是具備某一功能的工具 裝飾 指的是為被裝飾器物件新增新功能 裝飾器就是用來為被裝飾器物件新增新功能的工具 注意 裝飾器本身可以是任意可呼叫物件,被裝飾器的物件也可以是任意可呼叫物件 2.為何要用裝飾器 開放封閉原則 封閉指的是對修改封閉,對擴充套件開放 裝飾...

day11 高階函式和裝飾器

引數是函式的函式就是實參高階函式 def func4 f f func1 print f 10,20 2 print func1 10,20 2 def func1 nums return 1,2 func4 func1 系統實參高階函式的應用 普通用法 max min 序列 求序列中元素的最大 小...