资讯专栏INFORMATION COLUMN

python 装饰器 part1

meislzhua / 1010人阅读

摘要:装饰器早就应该掌握的技能。。。。装饰器本质是函数,用来装饰其他的函数,给他们附加功能。

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

相关文章

  • [译]如何使用Flask开发一个增删改查的应用

    摘要:教程译文首发自我的博客我们将创建一个简单的数据库驱动的笔记本应用。本教程面向想学习如何使用开发网站或者应用的初学者。在刚创建的文件中,创建一个名为的文件。现在,我们将创建一个函数,并且使用装饰器将它绑定到一个上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程译文首发自我的博客:Defshines Bl...

    tianlai 评论0 收藏0
  • Python】一文弄懂python装饰(附源码例子)

    摘要:装饰器的使用符合了面向对象编程的开放封闭原则。三简单的装饰器基于上面的函数执行时间的需求,我们就手写一个简单的装饰器进行实现。函数体就是要实现装饰器的内容。类装饰器的实现是调用了类里面的函数。类装饰器的写法比我们装饰器函数的写法更加简单。 目录 前言 一、什么是装饰器 二、为什么要用装饰器 ...

    liuchengxu 评论0 收藏0
  • Python装饰vs装饰模式

    摘要:希望引以为戒郑传装饰模式如果你了解,你肯定听过装饰器模式。在面向对象中,装饰模式指动态地给一个对象添加一些额外的职责。就增加一些功能来说,装饰模式比生成子类更为灵活。 漫谈 如果作为一个Python入门,不了解Python装饰器也没什么,但是如果作为一个中级Python开发人员,如果再不对python装饰器熟稔于心的话,那么可能并没有量变积累到质变。 我以前也看过很多讲python 装...

    stackvoid 评论0 收藏0
  • Python: 会打扮的装饰

    摘要:一般情况下,我们使用装饰器提供的语法糖,来简化上面的写法像上面的情况,可以动态修改函数或类功能的函数就是装饰器。本文标题为会打扮的装饰器本文链接为参考资料修饰器的函数式编程中的装饰器介绍思诚之道装饰器入门与提高赖明星 装饰器 我们知道,在 Python 中,我们可以像使用变量一样使用函数: 函数可以被赋值给其他变量 函数可以被删除 可以在函数里面再定义函数 函数可以作为参数传递给另外...

    blastz 评论0 收藏0
  • Python装饰

    摘要:一引用书流畅的书二基本概念问题装饰器是什么解答严格来说,装饰器只是语法糖,装饰器是可调用的对象,可以像常规的可调用对象那样调用,特殊的地方是装饰器的参数是一个函数问题装饰器有什么特性解答装饰器有个特性,一是可以把被装饰的函数替换成其他函数, 一, 引用 [书] 流畅的Python [书] Effective Python 二, 基本概念 showImg(https://segme...

    aisuhua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<