什么是装饰器

如果有函数A,B,C,已经所有编写完毕。这时你发现A, B, C都须要同一个功能,这时该怎么办?

答: 装饰器

装饰器事实上就是一个函数,只是这个函数的返回值是一个函数

个人理解。装饰器主要就是为了完毕上边的这个功能,将A, B, C 函数包裹在还有一个函数D中。D函数在A函数运行之前或之后,处理一些事情

#!/usr/bin/env python
#coding:utf-8
def SeparatorLine():print "############################"#装饰器带參数函数带參数
def DecratorArgFuncArg(f1,f2):def inner(func):def wrapper(arg):print "装饰器带參数函数带參数"f1()       result =  func(arg)f2()return result   return wrapperreturn inner#装饰器带參数函数不带參数
def DecratorArgFuncNoArg(f1,f2):def inner(func):def wrapper():print "装饰器带參数函数不带參数"f1()       result=func()f2()return resultreturn wrapperreturn inner#函数没有參数的装饰器
def FuncNoArgDecrator(func):def wrapper():print "函数没有參数的装饰器"       func()return wrapper#函数有參数的装饰器
def FuncArgDecrator(func):def wrapper(arg):print "函数有參数的装饰器"       func(arg)return wrapper#函数有返回值的装饰器
def FuncReturnDecrator(func):def wrapper():print "函数有返回值的装饰器"       result=func()return resultreturn wrapper#这两个函数用
def login():print '開始登录'def logout():print '退出登录'@FuncArgDecrator
def Lee(arg):print 'I am %s' %arg@FuncNoArgDecrator
def Marlon():print 'i am Marlon'@DecratorArgFuncNoArg(login,logout)
def Allen():print 'i am Allen'  @DecratorArgFuncArg(login,logout)
def Aswill(name):print 'I am %s' %name  @FuncReturnDecrator
def Frank():return 'I am frank'if __name__=='__main__':SeparatorLine()Lee('Lee')SeparatorLine()Marlon()SeparatorLine()Allen()SeparatorLine()Aswill('Aswill')SeparatorLine()result = Frank()print result

python中的装饰器相关推荐

  1. python装饰器原理-python 中的装饰器及其原理

    装饰器模式 此前的文章中我们介绍过装饰器模式: 装饰器模式中具体的 Decorator 实现类通过将对组建的请求转发给被装饰的对象,并在转发前后执行一些额外的动作来修改原有的部分行为,实现增强 Com ...

  2. python类装饰器详解-python 中的装饰器详解

    装饰器 闭包 闭包简单的来说就是一个函数,在该函数内部再定义一个函数,并且这个内部函数用到了外部变量(即是外部函数的参数),最终这个函数返回内部函数的引用,这就是闭包. def decorator(p ...

  3. python中的装饰器decorator

    python中的装饰器 装饰器是为了解决以下描述的问题而产生的方法 我们在已有的函数代码的基础上,想要动态的为这个函数增加功能而又不改变原函数的代码 例如有三个函数: def f1(x):return ...

  4. python编写装饰器_写python中的装饰器

    python中的装饰器主要用于在已有函数实现功能前附加需要输出的信息,下面将用实例展示我如何写装饰器. 首先分别尝试写装饰器装饰一个无参函数和一个有参函数(被装饰函数仅输出,无返回值情况下) 1 de ...

  5. python中的装饰器(基础装饰器)

    文章目录 一 前置知识-高阶函数,闭包 1. 高阶函数 2. 闭包 二 函数装饰器 1. 什么是装饰器(原理)? 2. 装饰器的实现 3. 何时执行装饰器 4. wraps方法 三 类装饰器 一 前置 ...

  6. [转载]理解PYTHON中的装饰器

    [翻译]理解PYTHON中的装饰器 来源stackoverflow上的问题 链接 python的函数是对象 要理解装饰器,首先,你必须明白,在python中,函数是对象. 这很重要. 简单例子来理解为 ...

  7. 为什么说想到Python中的装饰器是天才

    为什么说想到Python中的装饰器是天才 只需一个@符号就能分析.测试和重复使用你的代码 带着魔杖的仙女在Python代码中飞舞 软件中有没有什么是神奇的小魔法? 有,装饰器却非常接近! 如果说有一件 ...

  8. python中的装饰器有哪些-python 装饰器以及开发中常用的例子

    有时候我们想为多个函数,同意添加某一种功能,比如及时统计,记录日志,缓存运算结果等等,而又不想改变函数代码 那就定义装饰器函数,用它来生成一个在原函数基础添加了新功能的函数,代替原函数 参考金角大王的 ...

  9. python中的装饰器怎么运行_Python 装饰器入门(上)

    翻译前想说的话: 这是一篇介绍python装饰器的文章,对比之前看到的类似介绍装饰器的文章,个人认为无人可出其右,文章由浅到深,由函数介绍到装饰器的高级应用,每个介绍必有例子说明.文章太长,看完原文后 ...

  10. Python中的装饰器是什么?装饰器是如何工作的?

    Python很早就引入了装饰器--在PEP-318中,作为一种简化函数和方法定义方式的机制,这些函数和方法在初始定义之后必须进行修改. 这样做的最初动机之一是,使用classmethod和static ...

最新文章

  1. nginx+tomcat+memcache实现负载均衡、session共享
  2. 使用SQLyog无法连接到MySQL,error code 2013
  3. 【VC基础】2、物料主档与BOM结构
  4. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)
  5. 如何写一个作用域安全的构造函数
  6. 数据结构探险——图篇
  7. 解决XP中CPU占用率过高问题, 关了445这个端口(ZT)
  8. 阿里云黄海宇:视频云的云原生实践
  9. php lwm2m,LwM2M和CoAP及它们之间的关系
  10. 大漠插件后台绑定模式备忘录
  11. 三个技巧教你怎么裁剪视频画面,手残党也能掌握
  12. 渔乡朱朱的三农短视频账号运作和变现方法
  13. 自媒体人必看,这些无版权背景音乐网站,免费下载
  14. M40Z-025003TB0西克光电开关 订货号: 1200128
  15. 《Total Commander:万能文件管理器》——第7.3节.总结与作业
  16. Web前端-JavaScript
  17. C语言程序设计实践题,2020年C语言程序设计实践实验题目.doc
  18. 智能血压计方案/设计案列/APP/小程序
  19. Ublox F9p接收机在Windows 的相关配置
  20. camera face

热门文章

  1. java就业培训教程 第一章读书笔记
  2. decode()、nvl()等用法详解
  3. Java如何实现分页
  4. _Linux结束进程到底有多少种方法?
  5. java jar包 配置文件_java 导入jar包中配置文件
  6. java break递归_【Java】递归总结
  7. Linux(CentOS6.5)下编译安装Nginx1.10.1
  8. 计算机网络原理(第三章) 传输层 课后习题
  9. Oracle存储过程快速入门
  10. 互联网晚报 | 04月07日 星期四 |​ ​​​​刘强东卸任京东集团CEO,徐雷接任;世卫组织:中医药对治疗新冠有效...