首页 > 编程语言 > 详细

decorator在Python中的作用

时间:2014-02-14 23:03:31      阅读:547      评论:0      收藏:0      [点我收藏+]

decorator(装饰器)在python中作用,可以起到代码复用,也可以起到AOP(面向横切面)的作用。

另外很重要的一点应该就是function在python的世界中是作为一等公民存在的。

在python中,loop可以用map来代替,if...else...可以用filter来代替,那么try...except...呢?没有原生支持,那我们就创造一个,此时decorator就闪亮登场了。

下面举一个打开文件的例子来进行说明。

1 def read(file):
2     x = open(f, r)
3     y = x.read() 
4     x.close() 
5     return y

但是如果在打开文件的过程中出错了呢,怎么办?最简单的当然是修改read这个函数,但是假如有很多类似这样的函数呢,那怎么办,做为程序员,最重要的一个特性就是尽量解放生产力(就当给自己偷懒找个借口吧...),好吧,此时就是本文的主角出场了。

bubuko.com,布布扣
1 def deco_try(func): 
2     def _decotry(*arg, **kwarg): 
3         try: 
4             func(*arg, **kwarg) 
5         except Exception, ex: 
6             print app error, str(ex) 
7             raise ex 
8     return _decotry            
bubuko.com,布布扣

写好上述函数后,就可以使用了:

1 @deco_try
2 def read(file):
3     x = open(f, r)
4     y = x.read() 
5     x.close() 
6     return y

利用 decorator 的方式,只要在函数定义的上面加上 @decorator,而不用動到呼叫的地方。同時,原来的read里面的代码也不会改动。
decorator在了解之后,的确可以在「简化代码」,「重用代码」方面提供非常大的帮助。

理解了decorator后,相信在理解python中的property这个东西也就不会有任何困难了。

decorator在Python中的作用

原文:http://www.cnblogs.com/xwang/p/3549039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!