python 修饰器

1. 装饰器实质上就是一个函数, 该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。

装饰器被用于有切面需求的场景,较为经典的有插入日志,性能测试,事务处理等。 通过修饰器,可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用,装饰器的作用就是为已经存在的对象添加额外的功能。

装饰器在python 使用如此方法归因于python 的函数能像普通的对象一样能作为参数传递给其他函数,可以赋值给其他变量, 可以作为返回值 ,也可被定义在另外一个函数内。


装饰器举例:  

def use_logging(func):

      def wrapper(*args, **kwargs):

           logging.warn("%s is running"%func.__name__)

           return func(*args)

     return wrapper

@use_logging

def foo():

    print("i am foo")


@use_logging

def bar():

   print(" i am a bar")


bar()


带参数的装饰器——装饰器可以是带参数的装饰器。

def user_logging(level):

def decorator(func):

def wrapper(*args, **kwargs):

if level == "warn":

logging.warn("%s is running" % func.__name__)

                       return func(*args)

              return wrapper

        return decorator


@use_logging(level="warn")

def foo(name = "foo"):

print("i am %s" %name)

foo


类的装饰器

from functools import wraps      wraps 本身是一个装饰器,它能把原函数的元信息拷贝到装饰器函数中,是的装饰器函数也和原函数一样的元信息了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值