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

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

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

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

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

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

1 defdeco_try(func):2 def _decotry(*arg, **kwarg):3 try:4 func(*arg, **kwarg)5 exceptException, ex:6 print 'app error', str(ex)7 raiseex8 return _decotry

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

1 @deco_try2 defread(file):3 x = open(f, 'r')4 y =x.read()5 x.close()6 return y

利用 decorator 的方式,只要在函数定义的上面加上 @decorator,而不用動到呼叫的地方。同時,原来的read里面的代码也不会改动。

decorator在了解之后,的确可以在「简化代码」,「重用代码」方面提供非常大的帮助。

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

python decorator. decorator_decorator在Python中的作用相关推荐

  1. python的pass在函数中的作用_Pass Share:Python / Julia 中函数变量的传递机制

    从 C / MATLAB 过来的同学注意! Julia / Python 中使用的参数传递变量方式是不一样的.(以C的眼光看)在语法上细微的差别就会产生完全不一样的内容.(至少我被坑了很多次).这篇文 ...

  2. python在概率论与数理统计中的作用

    概率论与数理统计 一.描述性统计和统计图 1.用Pandas来计算统计量 使用 pandas的describe方法计算相关统计量,并计算身高和体重的偏度,峰度,样本的25%,50%,90%分位数 数据 ...

  3. python人工智能-Python在人工智能中的作用

    原标题:Python在人工智能中的作用 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方 ...

  4. python点的作用-一分钟了解Python中“*”的作用

    一分钟了解Python中"*"的作用 在为函数传递参数和函数定义时使用参数的时候,时常会看到有和 *和**,下面分别讲解其作用. 调用函数时使用*和 ** 假设有函数 def te ...

  5. python的用途实例-python中pass语句意义与作用(实例分析)

    想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...

  6. python中点的作用_一分钟了解Python中“*”的作用

    一分钟了解Python中"*"的作用 在为函数传递参数和函数定义时使用参数的时候,时常会看到有和 *和**,下面分别讲解其作用. 调用函数时使用*和 ** 假设有函数 def te ...

  7. python在人工智能应用锁_解读! Python在人工智能中的作用

    人工智能是一种未来性的技术,目前正在致力于研究自己的一套工具.一系列的进展在过去的几年中发生了:无事故驾驶超过300000英里并在三个州合法行驶迎来了自动驾驶的一个里程碑:IBM Waston击败了J ...

  8. python嵌入式系统开发_Python在开发实时嵌入式系统中的作用

    原标题:Python在开发实时嵌入式系统中的作用 在过去的几年里,Python已经成为一种热门的程序语言.以著名的Monty Python喜剧小组命名,该语言是面向对象和解释.该属性导致Python在 ...

  9. pass在c语言中的作用,Python语句中pass语句有什么作用?浅谈pass语句的用法

    pass语句就是好比是数学中的0,本身并没有任何实际意义,但是又是个确实存在的字符.所以,Pythonpass语句是空语句,是为了保持程序结构的完整性,pass不做任何事情,一般用做占位语句,作用与b ...

最新文章

  1. python 日志 logging 的用法
  2. 蓝桥杯Java历年真题与答案_蓝桥杯大赛java历年真题及答案整理(闭关一个月呕心沥血整理出来的)...
  3. 计算机基础- -认识磁盘
  4. 京东价格情报员 比价是假 砸场子是真
  5. PAT_B_1080_C++(25分)
  6. 现代计算机模型要求程序在执行,大学计算机基础考试考点.doc
  7. android支付宝支付开发过程
  8. python大文件排序_Python如何实现大文件排序?Python大文件排序的实现方法
  9. properties文件_spring boot 配置文件yaml和properties
  10. 人民网app搜索案例
  11. 服务器虚拟化好处现状二工大,服务器虚拟化优缺点(二)
  12. 全息投影是计算机技术吗,3D全息投影技术怎么应用在展厅的?
  13. 使用Origin画出复杂网络博弈中合作率时间演化图(学术论文)
  14. [ubuntu]ubuntu安装opengl
  15. 视频号运营指南百科书,新手必备干货丨国仁网络
  16. centos8 解决编译安装 nginx时遇到的报错
  17. Hadoop面试连环炮
  18. C++11中的时间库std::chrono(引发关于时间的思考)
  19. 论文阅读:Channel Augmented Joint Learning for Visible-Infrared Recognition
  20. 【科普】机密资产Confidential Asset白皮书(1)

热门文章

  1. golang中字符串的查找方法小结
  2. DBA最缺的不是技术
  3. 【转】查看linux服务器的系统信息
  4. Bailian3253 集合的划分【递归】
  5. 太原理工大学ICPC队介绍(2021版)
  6. CCF NOI1066 素数对
  7. CCF201604试题
  8. ICPC程序设计题解书籍系列之一:刘汝佳:《算法竞赛入门经典》(第2版)
  9. Java 系统工具类 —— System、Scanner、Runtime
  10. (自然语言处理)语料、文本数据集清单