装饰器是用来描述函数,记录日志,提供信息的函数,是一个为了更好的服务主函数的副函数:

详情还需查看:廖雪峰装饰器

关键在于:【import functools是导入functools模块。模块的概念稍候讲解。现在,只需记住在定义wrapper()的前面加上@functools.wraps(func)即可。】

下面是对两道对应练习题的个人代码编写即记录:

练习题1:请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:(事件函数目前没掌握,但是不影响对装饰器的理解)

import time, functools
def metric(fn):         # 这是decorator函数的定义,没有过多要传递的信息,两层嵌套嵌套即可@functools.wraps(fn)def wrapper(*args, **kw):print('%s executed in %s ms' % (fn.__name__, '10.24'))return fn(*args, **kw)return wrapper@metric                 #这是在定义主函数时调用decorator函数的方法
def fast(x, y):time.sleep(0.0012)return x + y@metric
def slow(x, y, z):time.sleep(0.1234)return x * y * zf = fast(11, 22)
s = slow(11, 22, 33)
if f != 33:print('测试失败!')
elif s != 7986:print('测试失败!')

练习题2:请编写一个decorator,能在函数调用的前后打印出'begin call''end call'的日志:

import functools
def metric(text1,text2):   # 这里不允许写要服务的函数名def decorate(fn):      # 要服务的函数名这里写@functools.wraps(fn)def wrapper(*args, **kw):print('%s %s:' % (text1, fn.__name__))fn(*args, **kw)print('%s %s.' % (text2, fn.__name__))return wrapperreturn decorate@ metric('begin call','end call')  # r如果在调用装饰器时要个性化传递参数,装饰器函数需要3层嵌套;注意这里不能再写good,已经@了。
def good(x,y):print(x+y)
good(2,3)

转载于:https://www.cnblogs.com/Jie-Bian/p/11047401.html

对于装饰器Decorator的理解相关推荐

  1. python装饰器-理解Python装饰器(Decorator)

    理解Python装饰器(Decorator) Python装饰器看起来类似Java中的注解,然鹅和注解并不相同,不过同样能够实现面向切面编程. 想要理解Python中的装饰器,不得不先理解闭包(clo ...

  2. 理解TS装饰器Decorator

    理解TS装饰器Decorator 介绍 类装饰器 方法装饰器 介绍 详细的关于ts中装饰器的使用和语法可以参考 ts官网中decorator这一章节,或者阮一峰的ts教程的decorator章节这里这 ...

  3. python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上

    Python高级编程--装饰器Decorator超详细讲解(上篇) 送你小心心记得关注我哦!! 进入正文 全文摘要 装饰器decorator,是python语言的重要特性,我们平时都会遇到,无论是面向 ...

  4. python装饰器的通俗理解_简单理解Python装饰器

    Python有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中. 刚接触装饰器,会觉得代码不多却难以理解.其实装饰器的语法本身挺简单的,复杂是因为同时混杂了其它的概念.下面我们一 ...

  5. 对Python装饰器的个人理解方法

    在自己好好总结并对Python装饰器的执行过程进行分解之前,对于装饰器虽然理解它的基本工作方式,但对于存在复杂参数的装饰器(装饰器和函数本身都有参数),总是会感到很模糊,即使这会弄懂了,下一次也很快忘 ...

  6. python装饰器的通俗理解_Python|闭包、装饰器,简单的实例,通俗的理解

    闭包和装饰器都是属于函数的语法范畴,是在函数定义中以另一个函数做为形参的语法机制. 1 闭包(Closurer) 闭包是定义内部函数的一种语法规则,要理解闭包,请看下面的实例:def outer(t) ...

  7. python描述器descriptor_python装饰器decorator、描述器descriptor

    背景 image.png 装饰器decorator 返回值为另一函数的函数,通常使用 @wrapper语法. 装饰器的常见例子包括 装饰器语法只是一种语法快捷方式,以下两个函数定义在语义上完全等价: ...

  8. [转载] Python学习笔记——用装饰器decorator和Memoization记忆化提高效率,原理讲清楚了

    参考链接: 在Python中使用装饰器进行记忆 Python学习笔记--用装饰器decorator和Memoization记忆化提高效率 装饰器Memoization记忆化运用`functools`中 ...

  9. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

最新文章

  1. php数据 文本_php直接调用文本文件内容
  2. 关于网络连接方式的总结(HostOnly,NAT....)
  3. python:进程操作
  4. python干啥用的啊-python干什么用的
  5. Setting up Jupyter with Python 3 on Ubuntu
  6. boost::phoenix模块实现自适应回声服务器相关的测试程序
  7. POS时机未到,POW强攻是实现全球货币的正确道路
  8. 线程自动退出_C++基础 多线程笔记(一)
  9. 学习编程技术常见的疑问,你敢说你没有过一个吗?信你个鬼!
  10. HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi
  11. 全球地区资料json 含中英文 经纬度_2020年Brain Bee北京、天津、河北赛区地区赛参赛说明...
  12. 【BZOJ4378】[POI2015]Logistyka 树状数组
  13. iOS---实现在屏幕上实时绘图的简单效果---CAShaperLayer和UIBezierPath的简单运用
  14. 【MySQL】MySQL-主从复制-集群方案-数据一致性问题解决方案 MySQL备份的各种姿势...
  15. Python美股量化交易填坑记录——13a.Vegas隧道交易机器人
  16. 自动控制原理之控制系统的数学模型(类比神经网络学习数学模型)
  17. NUC972触摸屏驱动移植过程分析(三)
  18. 每次进入命令需要重新source的解决方法
  19. 获客成本是什么 如何降低获客成本
  20. 容器与Servlet生命周期

热门文章

  1. Android编程获取网络连接状态及调用网络配置界面
  2. SQL Server 2012入门T-SQL基础篇:(8)Delete语句
  3. 网页鼠标滚动实现图片缩放
  4. 影像锐化工具_如何以及为什么要进行工具改造:花在锐化斧头上的时间永远不会浪费...
  5. JavaScript的“ this”通过成立一个高中乐队来解释
  6. 1130 Infix Expression
  7. hung-yi lee_p13_反向传播
  8. java程序员入门先学什么开发者工具
  9. python值得报班学习吗
  10. 如何发布自己的NPM包(模块)?