一、基本应用:
在python里方法也是对象,它可以作为参数传递。
现在有个方法foo,我希望在它运行前后做些事情,那就可以使用decorator了。
# coding=utf-8 # 原方法 def foo(): print 'running' # 修饰方法 def outer(some_func): def inner(): print "before some_func" some_func() print "after some_func" return inner # 修饰foo方法 decorated = outer(foo) # 2 # 运行修饰后的方法 decorated()
输出:
before some_func
running
after some_func
running
after some_func
可以看到我们在没有修改原方法foo()的前提下,修改了foo()运行之前和运行之后的行为。
二、使用@符号简化修饰器应用
# coding=utf-8 # 修饰方法 def NewFoo(some_func): def inner(): print "before some_func" some_func() print "after some_func" return inner # 原方法 @NewFoo def foo(): print 'running' # 运行修饰后的方法 foo()
修改后的代码更清晰简单了,而且foo方法名称都没有改变,行为就改变了。
这里注意:@NewFoo要与修饰方法名称一样,否则不会生效。通过修饰器,python实际调用是这样的:
foo = NewFoo(foo) foo()
三、一个我使用到的案例
假设我们的开发code有多个分支,但测试代码希望只有一份,那就可以在测试代码上定义@dev_branchA_run_only、@dev_branchB_not_run这样的标记来适应多个分支的测试case。
参考:
http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
http://coolshell.cn/articles/11265.html
http://www.imooc.com/article/1257
--end
相关推荐
在Python编程中,修饰器(Decorator)是一种强大的工具,它允许我们在不修改原函数代码的情况下,为函数添加额外的功能或行为。修饰器本质上是接受一个函数作为参数,并返回一个新的函数的高阶函数。这种设计模式...
"Python高级编程"涵盖了Python语言的深入理解和高级用法,这包括但不限于元编程、装饰器、生成器、协程、多线程与多进程、高级数据结构、错误处理、模块化编程、性能优化以及Python在大型项目中的应用。 1. **元...
在Python编程领域,掌握高级特性以及网络编程与并发模型是至关重要的。本资源"Python高级编程和异步IO并发编程"旨在深入探讨这些主题,帮助开发者提升技能,以实现更高效、更强大的程序设计。 首先,让我们从面向...
Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。"最新Python高级编程.最新版.pdf"这份文档很可能是为已经掌握基础Python知识的开发者准备的,旨在深入探讨Python的高级特性、...
元编程可以帮助开发者创建更加灵活和自定义的类和模块,以及实现元类(metaclass)和装饰器(decorator)等高级概念。 其次,Python的异常处理机制是另一个重要的高级话题。通过学习如何有效地使用try/except/...
在Python的高级编程技巧中,我们经常会遇到一系列提升效率和代码质量的方法。这些技巧涵盖了元编程、装饰器、生成器、上下文管理器、错误处理、模块化设计等多个方面。通过对这些技巧的深入理解和实践,我们可以使...
在博客文章“装饰者模式——Decorator”中,作者可能详细讲解了以下几个方面: 1. 装饰者模式的基本概念和原理。 2. 如何通过代码示例展示装饰者模式的实现。 3. 装饰者模式与继承的区别和优势。 4. 装饰者模式在...
Python是一种强大的高级编程语言,因其简洁的语法和广泛的应用领域而受到程序员的热爱。在Python中,掌握一些高级编程技巧和技术能显著提升代码质量和效率。本文将深入探讨四个关键的高级概念:迭代器与生成器、装饰...
函数式编程在Python中也占据重要地位,我们将探讨高阶函数如map()、filter()和reduce(),以及装饰器(decorator)的使用,它们能有效提高代码的复用性和可读性。此外,异常处理(try-except-finally)是处理程序错误...
本文将对 Python 中的 retry 装饰器进行详细的讲解,包括其定义、使用方法、优点和实际应用场景。 retry 装饰器的定义 retry 装饰器是指在 Python 中,使用装饰器(decorator)实现函数的重试机制。其主要思想是,...
- 装饰器:理解装饰器的原理,使用@decorator语法增强函数功能。 - 上下文管理器:了解with语句的工作方式,实现自己的上下文管理器。 -元类:深入理解类是如何被创建的,以及如何自定义元类。 -生成器:使用...
特别地,Python中的装饰器(decorator)和元类(metaclass)是进阶话题,它们允许更灵活地修改和扩展代码行为。 函数式编程在Python中也占据一席之地,函数可以作为第一类对象,这使得高阶函数如map、filter和...
在Python的高级核心编程中,我们探讨的是Python语言的深层次特性和高级用法,这些内容对于熟练掌握Python并提升编程效率至关重要。以下是一些关键的知识点: 1. **元编程**:元编程是关于在运行时创建或操作代码的...
### Python高级特性详解:装饰器与迭代器 #### 一、装饰器 ##### 1.1 装饰器的概念 装饰器是Python语言中一项非常强大的特性,它允许开发者在不修改原始函数代码的基础上,为其添加新的功能或行为。简而言之,...
Python编程是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。本教程专注于三个核心概念:装饰器、协程以及并发编程,这些都是Python编程中的重要概念,对于提升代码效率和解决复杂问题...
书中可能还会介绍一些进阶话题,如装饰器(decorator)、上下文管理器(context manager)和生成器(generator),这些都是Python高效编程的重要工具。此外,Python的Web开发、网络编程、数据分析等领域也可能有所...
通过阅读这本书,读者不仅能掌握Python的高级编程技巧,还能提升对Python语言底层运作的理解,这对于成为一名优秀的Python开发者至关重要。书中可能还包含了一些实战案例和实践建议,帮助读者将理论知识应用于实际...
7. **高级特性**:例如装饰器(decorator)、上下文管理器(context manager)、生成器(generator)、闭包(closure)、函数式编程等,这些是Python进阶学习的重点。 8. **文件与I/O操作**:学习如何打开、读写...
在Python编程语言的学习过程中,掌握基础的编程词汇是至关重要的。这个名为"Python 基本编程词汇.zip"的压缩包文件提供了一份详尽的、从A到Z分类的编程词汇清单,旨在帮助那些英语基础薄弱的初学者也能顺利地理解和...