python 帶能數的裝飾器

2021-10-08 06:43:15 字數 1523 閱讀 8245

from functools import wraps

from functools import wraps               #引入一行

@wraps(func_1) #加入一行

def inner(*args,**kwargs):

ret = func_1(*args,**kwargs)

return ret

return inner

def func_1(a):

print('來呀'+a)

return

func_1('c')

print(func_1.__name__)

如果不引入wraps,不加@wraps(func_1)時列印下面話列印出

$inner

加上引入,加@時列印

$func_1

帶引數的裝飾器  

flag = true

def outter(flag):

def inner(*args,**kwargs):

if flag :

print('func_1 begin')

ret = func_1(*args,**kwargs)

print('func_1 end')

return ret

ret = func_1(*args,**kwargs)

return ret

return inner

def func_1(a):

print('來呀'+a)

return

def func_2(a):

print('來呀'+a)

return

func_1('func_1')

func_2('func_2')

@與outter(flag)兩部份

兩步後語法糖轉化為:

多個裝飾器裝飾同乙個函式  

def inner(*args,**kwargs):

print('func_1 begin')

ret = func_1(*args,**kwargs)

print('func_1 end')

return ret

return inner

def inner(*args,**kwargs):

print('func_2 begin')

ret = func_1(*args,**kwargs)

print('func_2 end')

return ret

return inner

def func_1(a):

print('來呀'+a)

return '哈哈'

func_1('c')

$func_2 begin

$func_1 begin

$來呀c

$func_1 end

$func_2 end

'哈哈'

python 帶引數裝飾器

在前面一文 python裡為什麼需要使用裝飾器 decorator 裡,我們學習了為什麼需要裝飾器,知道裝飾器就是為了不修改原來函式的 又達到增加功能的作用。其實為了裝飾器更通用化,那麼裝飾器是否也可以帶引數呢?其實是可以的,這樣更加通用化了,達到共享極點。在前面也學習 為什麼要使用閉包 closu...

python的帶參裝飾器

又是從做鋪墊開始 文件字串 documentation strings def add x,y this is a function for add 函式語塊第一句 一般用三引號 因為習慣是多行的文字 可以使用.doc 訪問 慣例是首寫是大寫字母 return x y print name ndoc...

python 實現帶引數的裝飾器

coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...