装饰器 墨蓝 2021-12-14 14:17 249阅读 0赞 ### 装饰器 ### * 如果我们要增强函数的功能,但又不希望修改`原`函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator); * 本质上,decorator就是一个返回函数的高阶函数; * `@functools.wraps(func)是让装饰器记住的原始函数func 的 __name__`等属性的值,并传入装饰器所定义的新函数中; * **round()** 方法返回浮点数 x 的四舍五入值,用法:round( x \[, n\] ),n 表示保留的小数位数,省略时为0,返回一个整数; >>> type(round(3.97)) <class 'int'> >>> type(round(3.97,1)) <class 'float'> * 利用time.time()方法,我们可以计算两个时间点之间的间隔,返回当前时间的年月日 >>> print('%s-%s-%s %s:%s:%s' % (time.localtime().tm_year,time.localtime().tm_mon,time.localtime().tm_mday,time.localtime().tm_hour,time.localtime().tm_min,time.localtime().tm_sec)) 2019-7-3 16:31:14 设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间: #!/usr/bin/env python3 # -*- coding:utf-8 -*- import time,functools def metric(fn): @functools.wraps(fn) def wrapper(*args, **kw): # 获取开始时间 start = time.time() # 运行函数fn() f = fn(*args, **kw) # 获取结束时间 end = time.time() # 打印函数运行时间 print('%s executed in %s ms' % (fn.__name__, round((end - start)*1000))) # 返回函数运行结果 return f return wrapper @metric def fast(x, y): time.sleep(0.0012) return x + y; @metric def slow(x, y, z): time.sleep(0.1234) return x * y * z; f = fast(11, 22) s = slow(11, 22, 33) if f != 33: print('测试失败!') elif s != 7986: print('测试失败!')
相关 装饰器 装饰器 定义: 用来装饰的工具 在不改变源代码及调用方式的基础上额外增加新的功能 开放封闭原则: 扩展是开放的(增加新功能) 修改源码是封闭的(修改已经实现 柔光的暖阳◎/ 2023年10月10日 10:16/ 0 赞/ 49 阅读
相关 装饰器 [https://www.cnblogs.com/cicaday/p/python-decorator.html][https_www.cnblogs.com_cicaday_ ╰半橙微兮°/ 2023年01月06日 01:24/ 0 赞/ 130 阅读
相关 【python】闭包和装饰器、通用装饰器、多个装饰器、带参装饰器、类装饰器 1、闭包 概念: 把使用了外部函数变量的内部函数称为闭包 构成闭包的三个条件: 在函数嵌套的基础上(在外部函数内定义一个内部函数) 内部函数使用外部函数变 - 日理万妓/ 2022年11月28日 13:44/ 0 赞/ 238 阅读
相关 装饰器 装饰器 装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。 装饰器 ╰+攻爆jí腚メ/ 2022年06月07日 11:58/ 0 赞/ 231 阅读
相关 装饰器 以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这 港控/mmm°/ 2022年05月28日 13:27/ 0 赞/ 230 阅读
相关 装饰器 装饰器 如果我们要增强函数的功能,但又不希望修改`原`函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator); 本质上,de 墨蓝/ 2021年12月14日 14:17/ 0 赞/ 250 阅读
相关 装饰器 目录 普通装饰器 带参数的装饰器 多个装饰器装饰一个函数 装饰器的修复技术 装饰器 :在不改变原函数的代号和调用方法的基础上, 给原函数额外增加功能 女爷i/ 2021年10月29日 16:26/ 0 赞/ 365 阅读
相关 装饰器 装饰器的固定模式 def warpper(f): def inner(args,kwargs): print("WDNMD") 我就是我/ 2021年10月29日 07:12/ 0 赞/ 484 阅读
相关 装饰器 定义: 器字代表函数,装饰器本质是函数;装饰:装饰其他函数,就是为其他函数添加附加功能 原则: 1.不能修改被装饰函数的源代码(在不修改被装饰函数源代码的情况下为 心已赠人/ 2021年09月20日 12:00/ 0 赞/ 375 阅读
还没有评论,来说两句吧...