Python函式裝飾器

2022-08-29 08:45:12 字數 2153 閱讀 3143

1

import

time23

4#裝飾器函式

5def

show_time(f):

6def

inner():

7 start =time.time()

8f()

9 end =time.time()

10print('

spend %s

'%(end-start))

11return

inner

121314#

通過@show_time呼叫

15@show_time

16def

bar():

17print('

bar...........')

1819

deffoo():

20print('

foo...')

2122

foo()23#

bar=show_time(bar)

24 bar()

裝飾器類似與上面,先編寫函式的功能模組

通過@showtime來完成函式的功能追加

@showtime作用其實就是呼叫上面的閉包函式show_time

如果裝飾器中需要新增部分其他擴充套件的功能,可以給裝飾器帶上引數,如下:

1

import

time23

def logger(flag=''):4

defshow_time(f):

5def inner(*x,**y):

6 start =time.time()

7 f(*x,**y)

8 end =time.time()

9print('

spend %s

'%(end-start))

10if flag == '

true':

11print('

日誌記錄')

12return

inner

13return

show_time

1415 @logger('

true')

16def

bar():

17print('

bar...........')

1819 @logger('

true')

20def add(*x,**y):

21 total=0

22for temp in

x:23 total+=temp

24print

(total)

2526

@logger()

27def

foo():

28print('

foo...')

29#foo()30#

bar=show_time(bar)31#

bar()

3233 add(1,5,3,6,2,4)

34 foo()

python裝飾器 函式裝飾器,類裝飾器

只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...

python 裝飾器 函式裝飾器 類裝飾器

python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...

python裝飾器 裝飾器工廠函式

使用裝飾器實現如下所示的列印 小白聯盟def printequel func1 def inner1 print 15 func1 return inner1 def printstar func2 def inner2 print 15 func2 return inner2 printequel...