摘要:装饰器早就应该掌握的技能。。。。装饰器本质是函数,用来装饰其他的函数,给他们附加功能。
python 装饰器
早就应该掌握的技能。。。。
装饰器:本质是函数,用来装饰其他的函数,给他们附加功能。
实现装饰器要素:
函数既‘变量’,以操作变量的形式操作函数;
高阶函数和嵌套函数的使用;
函数既‘变量’代码举例:
import time def func(f): """ 将函数以变量的形式传递进来 """ start = time.time() f() end = time.time() print("函数f(也就是test)的运行时间是:{}".format(end-start)) print("in func....") return f def test(): time.sleep(2) print("in test.....") val = func(test) # val == test val() # test() # 以上实现了一个特别native的装饰器功能, # 在func内部可以增加其他功能(例如计算函数运行时间),最后return f嵌套函数
进一步改进:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print("函数func(也就是被装饰的函数)的运行时间是:{}".format(end-start)) return process def decorated(): time.sleep() print("decorated function") decorated = decorator(decorated) # decorated = return 来的process decorated() # 也就是调用process
最终版:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print("函数func(也就是被装饰的函数)的运行时间是:{}".format(end-start)) return process @decorator # python 装饰器的正确使用 def decorated(): time.sleep() print("decorated function") # 此时不用再像上面一样赋值,可以直接调用 decorated()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43065.html
摘要:教程译文首发自我的博客我们将创建一个简单的数据库驱动的笔记本应用。本教程面向想学习如何使用开发网站或者应用的初学者。在刚创建的文件中,创建一个名为的文件。现在,我们将创建一个函数,并且使用装饰器将它绑定到一个上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程译文首发自我的博客:Defshines Bl...
摘要:装饰器的使用符合了面向对象编程的开放封闭原则。三简单的装饰器基于上面的函数执行时间的需求,我们就手写一个简单的装饰器进行实现。函数体就是要实现装饰器的内容。类装饰器的实现是调用了类里面的函数。类装饰器的写法比我们装饰器函数的写法更加简单。 目录 前言 一、什么是装饰器 二、为什么要用装饰器 ...
摘要:希望引以为戒郑传装饰模式如果你了解,你肯定听过装饰器模式。在面向对象中,装饰模式指动态地给一个对象添加一些额外的职责。就增加一些功能来说,装饰模式比生成子类更为灵活。 漫谈 如果作为一个Python入门,不了解Python装饰器也没什么,但是如果作为一个中级Python开发人员,如果再不对python装饰器熟稔于心的话,那么可能并没有量变积累到质变。 我以前也看过很多讲python 装...
摘要:一般情况下,我们使用装饰器提供的语法糖,来简化上面的写法像上面的情况,可以动态修改函数或类功能的函数就是装饰器。本文标题为会打扮的装饰器本文链接为参考资料修饰器的函数式编程中的装饰器介绍思诚之道装饰器入门与提高赖明星 装饰器 我们知道,在 Python 中,我们可以像使用变量一样使用函数: 函数可以被赋值给其他变量 函数可以被删除 可以在函数里面再定义函数 函数可以作为参数传递给另外...
阅读 1504·2021-11-12 10:35
阅读 1556·2021-08-03 14:02
阅读 2611·2019-08-30 15:55
阅读 1992·2019-08-30 15:54
阅读 697·2019-08-30 14:01
阅读 2388·2019-08-29 17:07
阅读 2231·2019-08-26 18:37
阅读 2943·2019-08-26 16:51