生活随笔
收集整理的這篇文章主要介紹了
python中的装饰器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是裝飾器
如果有函數A,B,C,已經所有編寫完畢。這時你發現A, B, C都須要同一個功能,這時該怎么辦??
答: 裝飾器
裝飾器事實上就是一個函數,只是這個函數的返回值是一個函數
個人理解。裝飾器主要就是為了完畢上邊的這個功能,將A, B, C 函數包裹在還有一個函數D中。D函數在A函數運行之前或之后,處理一些事情
#!/usr/bin/env python
#coding:utf-8
def SeparatorLine():print "############################"#裝飾器帶參數函數帶參數
def DecratorArgFuncArg(f1,f2):def inner(func):def wrapper(arg):print "裝飾器帶參數函數帶參數"f1() result = func(arg)f2()return result return wrapperreturn inner#裝飾器帶參數函數不帶參數
def DecratorArgFuncNoArg(f1,f2):def inner(func):def wrapper():print "裝飾器帶參數函數不帶參數"f1() result=func()f2()return resultreturn wrapperreturn inner#函數沒有參數的裝飾器
def FuncNoArgDecrator(func):def wrapper():print "函數沒有參數的裝飾器" func()return wrapper#函數有參數的裝飾器
def FuncArgDecrator(func):def wrapper(arg):print "函數有參數的裝飾器" func(arg)return wrapper#函數有返回值的裝飾器
def FuncReturnDecrator(func):def wrapper():print "函數有返回值的裝飾器" result=func()return resultreturn wrapper#這兩個函數用
def login():print '開始登錄'def logout():print '退出登錄'@FuncArgDecrator
def Lee(arg):print 'I am %s' %arg@FuncNoArgDecrator
def Marlon():print 'i am Marlon'@DecratorArgFuncNoArg(login,logout)
def Allen():print 'i am Allen' @DecratorArgFuncArg(login,logout)
def Aswill(name):print 'I am %s' %name @FuncReturnDecrator
def Frank():return 'I am frank'if __name__=='__main__':SeparatorLine()Lee('Lee')SeparatorLine()Marlon()SeparatorLine()Allen()SeparatorLine()Aswill('Aswill')SeparatorLine()result = Frank()print result
總結
以上是生活随笔為你收集整理的python中的装饰器的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。