PYTHON裝飾器初探

2021-08-07 08:15:52 字數 922 閱讀 8679

python裝飾器的執行過程:

*在函式定義時,裝飾器就已經執行了

*在呼叫裝飾器修飾的原函式的時候,此時執行的是裝飾器裡的函式

例子 (控制台輸入)

def

log(text):

print

'print one'

defdecorator

(func):

print

'print oneone'

def(*args, **kw):

func(*args, **kw)

print

'%s %s():' % (text, func.__name__)

return func(*args, **kw)

return decorator

@log('hello')

defnow

():print

'now 2017.8.24'

此時控制塔直接輸出

print one

print oneone

>>>now ()

now 2017.8.24

hello now():

now 2017.8.24

import functools

... @functools.wraps(func)

def(*args, **kw)

...

當多個裝飾器時

@log1

@log2

def func()

可以將

@log2

def func()

看成是乙個函式來理解,在用log1來裝飾這個函式

初探裝飾器模式

裝飾器模式 動態地將責任附加到物件上,允許使用者向現有物件新增新功能而不改變其結構。若要擴充套件功能,裝飾器提供了比繼承更有彈性的替代方案。場景 假如有這樣乙個抽象裝備類 package pattern.decorator public abstract class equipment 獲取戰鬥力 ...

python裝飾器 Python 裝飾器

簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...

python裝飾器 裝飾器

由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。def now print 2015 3 25 f now f 2015 3 25 函式物件有乙個 name 屬性,可以拿到函式的名字 now.name now f.name now 現在,假設我們要增強now 函式的...