首页 > 代码库 > 【笔记】如何为被装饰的函数保存元数据
【笔记】如何为被装饰的函数保存元数据
在函数对象中保存着一些函数的元数据,例如:
f.__name__ : 函数的名字
f.__doc__ : 函数文档字符串
f.__moudle__ : 函数所属模块名
f.__dict__ : 属性字典
f.__defaults__ : 默认参数元组
使用装饰器后,再使用上面这些属性访问时,看到的是内部包裹函数的元数据,原来的元数据便丢掉了。
解决方案:使用标准库functools中的装饰器wraps装饰内部包裹函数,可以定制将原函数的某些属性,更新到包裹函数上面
1 # coding:utf8 2 from functools import wraps 3 def mydecorator(func): 4 @wraps(func) 5 def wrapper(*args,**kargs): 6 ‘‘‘wrapper function‘‘‘ 7 print ‘In wrapper‘ 8 func(*args,**kargs) 9 return wrapper 10 11 @mydecorator 12 def example(): 13 ‘‘‘example function‘‘‘ 14 print ‘In example‘ 15 16 17 print example.__name__ 18 print example.__doc__
【笔记】如何为被装饰的函数保存元数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。