zoukankan      html  css  js  c++  java
  • python decorator的理解

    一、decorator的作用

      装饰器本质上是一个Python函数,可以让其他函数在不做任何代码变动的前提下增加额外功能。

      装饰器的返回值也是一个函数对象。python里函数也是对象。

      它经常用于有切面需求(什么是切面需求?)的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

      装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

      概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

    二、简单的装饰器

      之前一篇很潦草的 python中的@  

    def use_logging(func):
        print "%s is running" % func.__name__
        return func()
    
    @use_logging
    def fun_a():
        print "hello, I'm func_a."
    
    fun_a  #带括号()报错 fun_a() TypeError: 'NoneType' object is not callable
    -----------  

    fun_a is running # 先执行use_logging
    hello, I'm func_a.
     
    def use_logging(func):
        def wrapper(*args, **kwargs):
            print "%s is running" % func.__name__
            return func()
        return wrapper
    
    
    @use_logging
    def fun_a():
        print "hello, I'm func_a."
    
    fun_a()
    -------
    fun_a is running
    hello, I'm func_a.

    三、带参数的装饰器

    四、如何写出好的装饰器

      

    ------------

      source:【1】如何理解python的装饰器

           【2】Python 里为什么函数可以返回一个函数内部定义的函数?

  • 相关阅读:
    1.2 流程控制
    SpringMVC-第一个MVC程序的搭建需要
    用户与权限
    自定义函数和存储过程
    触发器
    事务
    约束
    视图和索引
    函数二
    函数一
  • 原文地址:https://www.cnblogs.com/mxh1099/p/5774983.html
Copyright © 2011-2022 走看看