#! /usr/bin/env python
#coding=utf-8
def deco(arg):#接收一个参数的装饰器
   def _deco(fun):#装饰原函数,类似于java动态代理
       print arg#对参数进行处理
       def __deco(*args, **kwargs):
           print 'before'#前期处理
           ret = fun(*args, **kwargs)#调用原函数存储返回值,此处应注意,输入的参数里仍带有**

           print 'after'#后期处理
           return ret#返回值
       return __deco
   return _deco

#测试实例
@deco('test')#等价域deco('test')(fun)
def fun(a, b):
   print 'a + b:',a + b
   return (a + b)
def fun3(a, b, c):
   print 'a + b + c:',a + b + c
   return (a + b + c)
fun(1,3)
fun3(1,2,3)