python之路(7)裝飾器

2022-07-01 13:03:11 字數 1057 閱讀 1737

前言

裝飾器:為函式新增附屬功能,本質為函式

原則:不修改被修飾函式的源**

不修改被修飾函式的呼叫方式

裝飾器=高階函式+函式巢狀+閉包

定義下面函式

def cal(l):

res = 0

for i in l:

time.sleep(0.1)

res+=1return res

想要實現檢測函式的執行時間

import time

def cal(l):

start_time = time.time()

res = 0

for i in l:

time.sleep(0.1)

res+=1

stop_time = time.time()

print("函式的執行時間%s" %(stop_time-start_time))

return res

以上函式雖然完美的實現了測量時間,但是違反了開放封閉原則,修改了函式中的**,我們應該在不改變函式**的前提下加入檢測時間的功能,由此應該引入裝飾器的概念

import time

def timer(func):

start_time=time.time()

res=func(*args,**kwargs) # --> (不修改修飾函式的源**)

stop_time=time.time()

print('函式執行的時間%s' %(stop_time-start_time))

return res

注:其上就是裝飾器

@timer #做了將cal函式名作為引數傳給了timer函式,並返回賦值給cal cal = timer(cal) --> (不修改修飾函式的呼叫方式)

def cal(l):

res = 0

for i in l:

time.sleep(0.1)

res+=1

return res

python之路 裝飾器

def login1 login type print login type login type defauth1 args print 處理過程1 defauth2 args print 處理過程2 return auth2 return auth1 login1 qq home login1 ...

python之路 裝飾器

1.1什麼是裝飾器 裝飾器是由函式去生成的,用於裝飾某個函式或方法或類,他可以讓這個函式在執行之前或者執行之後做一些操作 先定義乙個函式 func def func arg print arg func hello world 執行結果為列印 hello world 現在在執行func 函式前後執行...

python之路 裝飾器

python裡面的動態 存在的意義 在不破壞原有的函式和原有函式的呼叫基礎上,給函式新增新的功能 fn是目標函式.def inner args,kwargs 為了目標函式的傳參 在執行目標函式之前.ret fn args,kwargs 呼叫目標函式,ret是目標函式的返回值 在執行目標函式之後.re...