defzsq(fun):
def zsq_n(*args,**kwargs)
print('
這是裝飾器需要執行內容')
r = fun(*args,**kwargs)
print('
在被裝飾函式執行完成下執行顯示
')
return
r
return
zsq_n
@zsq
defa():
print('
這是乙個被裝飾的函式')
a()>>>這是裝飾器需要執行內容
>>>這是乙個被裝飾的函式
>>>在被裝飾函式執行完成下執行顯示
裝飾器執行操作的順序和被裝飾函式在裝飾器內部位置決定
上面這乙個是不需要裝飾器引數就能執行那麼需要引數的裝飾器怎麼寫呢?
defzsq(裝飾器形參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...