1 無參裝飾器,包裝無參函數函數
#無參裝飾器包裝無參函數 def decorator(func): print('我是裝飾器') return func def decorator1(func): print('我是裝飾器1') return func @decorator @decorator1 def function(): print('我是函數') function()
'''
執行順序爲:decorator1() -> decorator() -> function()
''' #裝飾器就至關於下面的調用 #decorator(function())
2 無參裝飾器,包裝有參函數spa
#無參裝飾器包裝有參函數 def decorator(func): def x(*args,**kwargs):#處理傳入函數的參數 print('裝飾器開始') func(*args,**kwargs)#調用函數 print('裝飾器裏面函數參數:',args,kwargs) print('裝飾器結束') return x @decorator def function(age,name,sex,tel=110): print('我是函數參數:',age,name,sex,tel) function(18,'小王','女')
3 帶參裝飾器,包裝無參數函數code
#帶參裝飾器包裝無參數函數 ''' 在裝飾器的內部在定義一個裝飾器,來修飾函數 ''' def decorator(decorator_arg): print('我是裝飾器參數:',decorator_arg) #裝飾器參數 def newdecorator(func): #最終返回的函數,來調用被修飾的函數 return func #返回被修飾的函數 return newdecorator @decorator('這是裝飾器參數') def function(): print('我是函數') function()
4 帶參數裝飾器,包裝帶參數函數blog
#帶參數裝飾器,包裝帶參數函數 ''' 帶參數的裝飾器,在內部定義一個新的裝飾器重新裝飾函數, 在定義一個方法來接受函數的參數,在這個函數的內部調用函數並把函數的參數傳入 ''' def decorator(decorator_arg): def newdecorator(func):#func就至關於function函數 def x(*args,**kwargs):#處理函數的參數 print('裝飾器開始') func(*args,**kwargs)#調用函數 print('裝飾器結束') print(decorator_arg,func,args,kwargs) return x return newdecorator @decorator('我是decorator_arg') def function(age,name,sex,tel=110): print('我是函數參數:',age,name,sex,tel) function(18,'翠花',sex="女")