python裝飾器見解筆記

2022-06-02 05:24:08 字數 1292 閱讀 3793

def

zsq(fun):

def zsq_n(*args,**kwargs)

print('

這是裝飾器需要執行內容')

r = fun(*args,**kwargs)

print('

在被裝飾函式執行完成下執行顯示

')

return

r

return

zsq_n

@zsq

defa():

print('

這是乙個被裝飾的函式')

a()>>>這是裝飾器需要執行內容

>>>這是乙個被裝飾的函式

>>>在被裝飾函式執行完成下執行顯示

裝飾器執行操作的順序和被裝飾函式在裝飾器內部位置決定

上面這乙個是不需要裝飾器引數就能執行那麼需要引數的裝飾器怎麼寫呢?

def

zsq(裝飾器形參date):

defzsq_n(fun):

def zsq_nn(*args,**kwargs)

print('

這是裝飾器引數

',data)

print('

這是裝飾器需要執行內容')

r = fun(*args,**kwargs)

print('

在被裝飾函式執行完成下執行顯示

')

return

r

return

zsq_nn

return

zsq_n

@zsq(

'2019.4.17')

def a(x+y):

return x+y

a(5,6)

>>>這是裝飾器引數2019.4.17

>>>這是裝飾器需要執行內容

>>>11

>>>在被裝飾函式執行完成下執行顯示

只不過是在裝飾外部套一層皮.

注意當不需要裝飾器引數時,@zsq,

需要時是@zsq(引數)

如果還看不動那麼給個比方

def

大臣(太子名):

def做皇帝的位置(太子的能力):

r =太子執行的能力

返回太子的能力r(包裝)

皇帝的能力

@大臣def

太子名():

執行的太子能力

就像是乙個國家皇帝掛了,太子無能為力,於是忠心的大臣扶持太子上位,一共組成皇帝的能力,

pass

Python 裝飾器筆記

def wrap in tag b fn wrap in tag b 是真正的裝飾器 def return fn return defwrap in tag i fn def return fn return wrap in tag b wrap in tag i defhello return h...

python 裝飾器筆記

python的裝飾器是乙個函式b 用來裝飾另乙個函式a 使a具有b的功能,執行a方法同時 也會執行b方法 這種用法用到 內部函式 函式傳遞 沒有使用 def debug func print 1111 內部函式返回 入參函式 並執行 return func print 2222 裝飾器函式返回 內部...

Python 裝飾器筆記

def wrap in tag b fn wrap in tag b 是真正的裝飾器 def return fn return defwrap in tag i fn def return fn return wrap in tag b wrap in tag i defhello return h...