Python 函式裝飾器

2021-07-12 05:18:46 字數 943 閱讀 4536

from time import ctime,sleep

deftsfunc

(func):

def(a):

print

'[%s] %s() called, a= %s ' % (ctime(), func.__name__, a)

return func()

@tsfunc

deffoo

():print

"doci daci"

foo(3)

sleep(2)

foo(4)

函式裝飾器,就是修飾,修改乙個函式,有點像aop程式設計。

首先foo是乙個函式 。

其實tsfunc也是另乙個函式,

使用@符號時候,就相當於是呼叫了tsfunc 這個函式,同時引數就是foo。

tsfunc就像是 函式熔爐。重煉了。

當裝飾器有引數時,相當於,熔爐,首先要重煉。所以生成的函式就又多了一層。如下所示。

from time import ctime,sleep

deftsfunc

(arg):

defts_ts_func

(func):

def(a):

print

'[%s] %s() called, a= %s, arg=%s ' % (ctime(), func.__name__, a, arg)

return func()

return ts_ts_func

@tsfunc("123")

deffoo

():print

"doci daci"

foo(3)

sleep(2)

foo(4)

以前不理解裝飾器, 慢慢練習寫寫,從簡單,到複雜,慢慢就有感覺了。

參考

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...