`
bluecrystal
  • 浏览: 265728 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

阅读更多
主题: 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  

分享到:
评论

相关推荐

    python-base.py: 千行代码入门Python python-visual.py: 15张图入门Matplotlib

    python_oneline.py: 几个小例子告诉你, 一行Python代码能干哪些事 python_requests.py: Python中最好用的爬虫库Requests代码实例 python_functional.py: Python进阶: 函数式编程实例(附代码) python_decorator.py:...

    python实现Decorator模式实例代码

    本文研究的主要是python实现Decorator模式,具体介绍如下。 一般来说,装饰器是一个函数,接受一个函数(或者类)作为参数,返回值也是也是一个函数(或者类)。首先来看一个简单的例子: # -*- coding: utf-8 -*- ...

    LearnPython-master.zip

    python_oneline.py: 几个小例子告诉你, 一行Python代码能干哪些事 python_requests.py: Python中最好用的爬虫库Requests代码实例 python_functional.py: Python进阶: 函数式编程实例(附代码) python_decorator.py:...

    Python实现对一个函数应用多个装饰器的方法示例

    本文实例讲述了Python实现对一个函数...#coding:utf-8 def decorator1(func): def wrapper(): print 'hello python 之前' func() return wrapper def decorator2(func): def wrapper(): func() print 'hello p

    Python经典面试题.doc

    Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1. class Singleton(type): def __init__(cls, name, bases, dict): super(Singleton, cls).__init__(name, bases, dict) cls....

    typedecorator:基于装饰器的类型检查实现

    类型装饰器基于装饰器的Python类型检查实现。...快速开始使用pip安装软件包: pip install typedecorator您现在可以在代码中开始使用它了# import the decorators and the typecheck setup functionfro

    macro-egs:一堆Rust宏示例,用于自我练习

    宏示例 只是一堆Rust宏实现。 例子 decorator ( cargo run --example decorator-eg )遵循Python装饰器模式。 这几乎是在完成的。

    详解Python 装饰器执行顺序迷思

    装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思。 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会说明它们是自上而下的,比如下面...

    老生常谈Python进阶之装饰器

    要理解Python装饰器,首先要明白在Python中,函数也是一种对象,因此可以把定义函数时的函数名看作是函数对象的一个引用。既然是引用,因此可以将函数赋值给一个变量,也可以把函数作为一个参数传递或返回。同时,...

    pymitter:扩展的Node.js EventEmitter 2方法的Python端口,提供名称空间,通配符和TTL

    特征带通配符的命名空间听时间(TTL) 通过装饰器或回调使用轻巧的实现,良好的性能安装pymitter是注册的,因此使用pip进行安装非常容易: pip install pymitter例子基本用法 from pymitter import EventEmitteree =...

    如何真正的了解python装饰器

    合理使用装饰器可以简化开发,并且使得代码更加清晰。下面我们分别介绍两种装饰器,不带参数的装饰器和带参数的装饰器。 一、不带参数的装饰器 我们用一个实际的例子来引入装饰器的概念,比如我们现在有一个方法A()...

    详解Django中六个常用的自定义装饰器

    有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为,通过使用类似例中的接口将修改动作封装在装饰对象中。 decorator 可以动态地修改函数、方法或类的功能,而无需创建子类或修改类的源代码。正...

Global site tag (gtag.js) - Google Analytics