python入門(六)裝飾器的理解
阿新 • • 發佈:2018-04-18
裝飾器裝飾器用於拓展原有函數功能的一種函數
比如: br/>@符號是裝飾器的語法糖,在定義函數的時候使用,避免再一次賦值操作
運行步驟def back()→return out →def out()
帶參數的裝飾器:
比如:
def helloWorld(fun)
def out()
print ("======start========")
fun()
print ("=====end======")
return out
@helloWorld
def back ()
print ("let‘s go")
back()
運行結果:
======start========
let‘s go
=====end======
@符號是裝飾器的語法糖,在定義函數的時候使用,避免再一次賦值操作
運行步驟def back()→return out →def out()
帶參數的裝飾器:
def helloWorld(arg): def out(fun): def go(): print ("======start========") fun() print ("=====end======") return go return out @helloWorld("will‘) def back (): print ("let‘s go") back()
運行結果:
======start========
let‘s go
=====end======
看到裝飾器自帶一個參數傳入,那麽運行過程中這個參數會代入運行,整體的運行過程
當函數也帶參數參與:
def logging(taskname): def wrapper(func): def retu(*args, **wkargs): # 函數通過裝飾起參數給裝飾器傳送參數 print (‘before task‘,taskname) # 裝飾器傳變量給函數 taskid = 1 summer, funcres = func(taskid, *args, **wkargs) print (‘after task‘, taskid, summer) return retu return wrapper @logging("test") def testd(taskid): print ("testd runing",taskid) return "task summer success eg",[] testd()
運行結果和步驟:
python入門(六)裝飾器的理解