無參裝飾器函式和帶參裝飾器函式

2021-08-22 16:11:15 字數 1383 閱讀 2282

python裝飾器:下邊幾個裝飾器帶引數和不帶引數例子詳解:

我們都知道,python中函式是可以被當做引數進行傳遞的,所以最直接的裝飾器例項如下:

def decorator(func):#裝飾器函式

print('welcome')

func()

print('end')

def test():

print('hello world')

#將test()方法以引數形式傳給方法decorator(func)

decorator(test)

#輸出結果:welcome

# hello world

# end

這樣寫比較麻煩,而且改變了源**的結構,容易出錯

可以使用裝飾器,把上例改為:

def zhuangshiqi(func):

def decorator():

print('welcome')

func()

print('end')

return decorator

@zhuangshiqi

def test():

print('hello world')

test()

#列印結果welcome

# hello world

# end

裝飾器裝飾帶有引數的函式:

def decorator(func):

print('welcome')

return func(*args,**kwargs)

@decorator

def test(n):

print(n*n)

test(3)

#列印結果

#welcome

#9

裝飾器和被裝飾函式都帶有引數:

def decrator(*dargs, **kargs):#接收裝飾器傳來的引數

print(kargs)#列印為乙個字典

print(dargs)#列印為乙個元組

#你可以在這裡利用裝飾器的引數新增你想要的功能

return func(*args, **kwargs)

@decrator(1,2,3,4,5,name='小明',age=18,height=180)

def test(x, y):

t=x*y

print(t)

test(2,3)#列印結果

# (1, 2, 3, 4, 5)

# 6

無參裝飾器

def index x,y print x,y index args,kwargs index y 222,x 111 可以把函式當做引數傳入 可以把函式當做返回值返回 def index return 123 def foo func return func foo index def outte...

python裝飾器 有殘裝飾器 無參裝飾器

裝飾器 修飾別人的工具,修飾新增功能,工具指的是函式 裝飾器本身可以是任何可呼叫物件,被裝飾的物件也可以是任意可呼叫物件 為什麼要用裝飾器 開放封閉原則 對修改是封閉的,對擴充套件是開放的 裝飾器就是為了在不修改被裝飾物件的源 以及呼叫方式的前提下,為期新增新功能 基本裝飾器 usr bin pyt...

遞迴函式和有參裝飾器

語法糖會把緊挨著的被裝飾物件的名字當作引數自動傳入裝飾器函式裡面 判斷多個語法糖裝飾器函式執行順序 def outter1 func1 print 載入了outter1 res1 func1 args,kwargs return res1 def outter2 func2 print 載入了out...