`
icbm
  • 浏览: 58473 次
社区版块
存档分类
最新评论

Python的装饰器(decorator)

阅读更多
# coding=utf-8

"""装饰器:
"""

def deco(func):
"""无参数装饰器,接受一个函数,返回一个新的函数。
"""
    def f(*args, **kwargs):
        print "----", func.__name__
        result = func(*args, **kwargs)
        print "++++", func.__name__
        f.__name__ = func.__name__
        return result

    return f


def deco_params(msg):
"""有参数装饰器,接受一个函数,返回一个无参数装饰器。
"""
    def f(func):
        def f2(*args, **kwargs):
            print ">>>>", msg, func.__name__
            result = func(*args, **kwargs)
            print "<<<<", msg, func.__name__
            return result

        f2.__name__ = func.__name__
        return f2

    return f

@deco
@deco_params("ORANGE")
@deco_params("APPLE")
def f1_test(n):
    print "orange", n

if __name__ == "__main__":
    f1_test(30)


执行结果如下:
D:\ATMP\python>python test02.py
---- f1_test
>>>> ORANGE f1_test
>>>> APPLE f1_test
orange 30
<<<< APPLE f1_test
<<<< ORANGE f1_test
++++ f1_test

分享到:
评论

相关推荐

    Python装饰器decorator用法实例

    本文实例讲述了Python装饰器decorator用法。分享给大家供大家参考。具体分析如下: 1. 闭包(closure) 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中...

    python装饰器decorator介绍

    一、装饰器decorator decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现有的功能。其实也就是其他语言中的AOP的概念,将对象或函数的真正功能也其他辅助的...

    python使用装饰器(Decorator)的方式实现单例模式

    demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择

    Python装饰器(decorator)定义与用法详解

    主要介绍了Python装饰器(decorator)定义与用法,结合具体实例形式详细分析了Python装饰器的概念、功能及相关使用技巧,需要的朋友可以参考下

    装饰器decorator_python_

    装饰器:用于在不改变原函数的情况下给原函数添加额外的功能

    Python装饰器基础详解

    装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数...Python装饰器以两种形式呈现: 【1】函数装饰器在函数定义的时候进行名称重绑定,提供一个逻

    深入了解和应用Python 装饰器 @decorator

    Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰的,它装饰的是一个函数,保持被装饰函数的原有功能,再装饰上(添油加醋)一些其它功能,并返回带...

    12步入门Python中的decorator装饰器使用方法

    装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果。相对于其它...

    python中的decorator的作用详解

    在python中,装饰器(decorator)分为 函数装饰器 和 类装饰器 两种。python中内置的@语言就是为了简化装饰器调用。 列出几个装饰器函数: 打印日志:@log 检测性能:@performance 数据库事务:@transaction URL路由...

    timeout-decorator:Python的超时装饰器

    超时装饰器安装从源代码: python setup.py install从pypi: pip install timeout-decorator用法import timeimport timeout_decorator@timeout_decorator.timeout(5)def mytest(): print("Start") for i in range(1,...

    awesome-python-decorator:精选的python装饰器资源精选清单

    很棒的Python装饰器 精选的python装饰器资源的精选列表。 你不知道装饰 这里是有关python装饰器的一些资源。 此页面在很大程度上记录了将装饰器添加到Python的过程的历史。 此页面旨在作为装饰器代码段的中央存储库...

    Python 装饰器(Decorator)

    要想玩装饰器,那就得了解一下闭包,我们不得不这样做! 闭包(Closure) 对象是附加了方法的数据。闭包是附带数据的函数。 闭包是引用了自由变量的函数。大白话说,只要某个函数中引用了一些不在当前代码全局中定义的...

    Python中装饰器学习总结

    本文研究的主要内容是Python中装饰器相关学习总结,具体如下。 装饰器(decorator)功能 引入日志 函数执行时间统计 执行函数前预备处理 执行函数后清理功能 权限校验等场景 缓存 装饰器示例 例1:无参数的函数 ...

    Python装饰器的函数式编程详解

    Python的装饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西。虽然好像,他们要干的事都很相似——都是想要对一个已有的模块做...

    分析Python中设计模式之Decorator装饰器模式的要点

    主要介绍了Python中设计模式之Decorator装饰器模式模式,文中详细地讲解了装饰对象的相关加锁问题,需要的朋友可以参考下

    详解Python 装饰器执行顺序迷思

    装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思。 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会说明它们是自上而下的,比如下面...

    python装饰器三种装饰模式的简单分析

    一 无参装饰器: # 装饰器 import time # 装饰器,记录函数运行时间 def decorator01(fun): def wapper(): stime = time.time() fun() etime = time.time() print(fun run time is {TIME}.format(TIME=etime - ...

Global site tag (gtag.js) - Google Analytics