python小例子之8 -- decorator的使用

主題: decorator的使用
環境: winxp pro + sp2 + python2.5
備註: 請注意,凡是在源代碼文件中使用了中文字符,請最好保存爲utf-8格式
              本文與另一篇blog文章內容相關: python中如何簡單的實現decorator模式--由django admin源碼所得體會 
              本文就是因幾位網友在該blog回帖後,我對python decorator的使用整理出的一點心得,在上述說起的blog中的代碼亦可修改成本文所描述的方式,各位同窗可本身試試 :)
              具體的語法描述可參考: python manuals -- Language Reference -- 7.Compound statements -- 7.6 Function definitions  
代碼:
# decorator_arg.py   
  
# 修飾函數       
def decorator(fun):       
    def ifun(*args, **kwargs):       
        args = (i+1 for i in args)       
        return fun(*args, **kwargs)       
    return ifun       
  
def decorator1(arg):   
    def _decorator1(fun):   
        def ifun(*args, **kwargs):   
            args = (i+arg for i in args)   
            return fun(*args, **kwargs)   
        return ifun   
    return _decorator1   
  
# 被修飾函數1   
@decorator   
def fun1(x,y,z):       
    return x+y+z       
  
arg = 2   
# 被修飾函數2   
@decorator1(arg)   
def fun2(x,y,z):   
    return x+y+z   
      
# 測試代碼       
a = 3       
b = 4       
c = 5   
  
print fun1(a,b,c)   
print fun2(a,b,c)
測試:保存爲文件,直接執行便可
測試結果:
控制檯輸出:
>>>    
15   
18
相關文章
相關標籤/搜索