博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
decorator在Python中的作用
阅读量:4688 次
发布时间:2019-06-09

本文共 984 字,大约阅读时间需要 3 分钟。

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这个函数,但是假如有很多类似这样的函数呢,那怎么办,做为程序员,最重要的一个特性就是尽量解放生产力(就当给自己偷懒找个借口吧...),好吧,此时就是本文的主角出场了。

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

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

1 @deco_try2 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这个东西也就不会有任何困难了。

转载于:https://www.cnblogs.com/xwang/p/3549039.html

你可能感兴趣的文章
【bzoj4310/hdu5030-跳蚤】后缀数组
查看>>
深度信任网络的快速学习算法(Hinton的论文)
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
s的封装和信息隐蔽
查看>>
excelhttp://www.cnblogs.com/caoyuanzhanlang/p/3591904.html
查看>>
ArrayList和LinkedList和Vector源码分析
查看>>
webservice整合spring cxf
查看>>
再次编译这个应用程序应该不会有问题
查看>>
Ubuntu-tomcat7目录
查看>>
189. Rotate Array
查看>>
asp.net 的三种开发模式
查看>>
Android 交叉编译 IPerf3
查看>>
Android原生Gallery关于图像Orientation的问题
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
【转】java事件监听机制
查看>>
数组 Arrays类
查看>>
String类的深入学习与理解
查看>>
OLTP vs OLAP
查看>>