论坛首页 编程语言技术论坛

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

浏览 3068 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-01  
主题: decorator的使用
环境: winxp pro + sp2 + python2.5
备注: 请注意,凡是在源代码文件中使用了中文字符,请最好保存为utf-8格式
              本文与另外一篇blog文章内容相关:python中如何简单的实现decorator模式--由django admin源码所得体会 
              本文就是因kdekid 在该blog回帖后,我对python decorator的使用整理出的一点心得,在上述提及的blog中的代码亦可修改为本文所描述的方式,各位同学可自己试试 :)
              具体的语法描述可参考: python manuals -- Language Reference -- 7.Compound statements -- 7.6 Function definitions 
代码:
python 代码
  1. # decorator_arg.py   
  2.   
  3. # 修饰函数       
  4. def decorator(fun):       
  5.     def ifun(*args, **kwargs):       
  6.         args = (i+1 for i in args)       
  7.         return fun(*args, **kwargs)       
  8.     return ifun       
  9.   
  10. def decorator1(arg):   
  11.     def _decorator1(fun):   
  12.         def ifun(*args, **kwargs):   
  13.             args = (i+arg for i in args)   
  14.             return fun(*args, **kwargs)   
  15.         return ifun   
  16.     return _decorator1   
  17.   
  18. # 被修饰函数1   
  19. @decorator   
  20. def fun1(x,y,z):       
  21.     return x+y+z       
  22.   
  23. arg = 2   
  24. # 被修饰函数2   
  25. @decorator1(arg)   
  26. def fun2(x,y,z):   
  27.     return x+y+z   
  28.       
  29. # 测试代码       
  30. a = 3       
  31. b = 4       
  32. c = 5   
  33.   
  34. print fun1(a,b,c)   
  35. print fun2(a,b,c)   
测试:保存为文件,直接执行即可
测试结果:
控制台输出:
  1. >>>    
  2. 15   
  3. 18  

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics