Python装饰器

Python装饰器,第1张

Python装饰

转自:https://www.cnblogs.com/astropeak/p/9029104.html

文章目录
  • 装饰器例
  • 多重装饰


装饰器例
from functools import wraps

def trace(name):
  def wrapper(func):
    @wraps(func) #名称修正
    def wrapped(*args, **kwargs):
      print('Enter %s. Args: %s, kwargs: %s' % (name, args, kwargs))
      rv = func(*args, **kwargs)
      print('Exit %s. Return value: %s' % (name, rv))
      return rv

    return wrapped
  return wrapper

@trace('area')
def area(height, width):
  print('area called')
  return height * width

area(2, 3)

结果为

Enter area. Args: (2, 3), kwargs: {}
area called
Exit area. Return value: 6
多重装饰
@decSec
@decFir
def foo():pass

等价于:

def foo():pass
foo = decFir(foo)
foo = decSec(foo)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5658632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存