python 9-2 如何为被装饰的函数保存元数据,使用标准库functools中的装饰器wraps 装饰内部包裹函数
2017-01-29 10:54
821 查看
9-2 如何为被装饰的函数保存元数据
解决方案:
使用标准库functools中的装饰器wraps 装饰内部包裹函数,可以
制定将原函数的某些属性,更新到包裹函数的上面
其实也可以通过
wrapper.name = func.name
update_wrapper(wrapper, func, (‘name‘,’doc‘), (‘dict‘,))
f.name 函数的名字
f.doc 函数文档字符串
f.module 函数所属模块名称
f.dict 函数的属性字典
f.defaults 默认参数元组
f.closure 函数闭包
解决方案:
使用标准库functools中的装饰器wraps 装饰内部包裹函数,可以
制定将原函数的某些属性,更新到包裹函数的上面
其实也可以通过
wrapper.name = func.name
update_wrapper(wrapper, func, (‘name‘,’doc‘), (‘dict‘,))
f.name 函数的名字
f.doc 函数文档字符串
f.module 函数所属模块名称
f.dict 函数的属性字典
f.defaults 默认参数元组
f.closure 函数闭包
from functools import wraps,update_wrapper def log(level="low"): def deco(func): @wraps(func) def wrapper(*args,**kwargs): ''' I am wrapper function''' print "log was in..." if level == "low": print "detailes was needed" return func(*args,**kwargs) #wrapper.__name__ = func.__name__ #update_wrapper(wrapper, func, ('__name__','__doc__'), ('__dict__',)) return wrapper return deco @log() def myFunc(): '''I am myFunc...''' print "myFunc was called" print myFunc.__name__ myFunc()
相关文章推荐
- Python 中实现装饰器时使用 @functools.wraps 的理由
- python 装饰器及标准库functools中的wraps
- Python 装饰器之 functools.wraps
- Python 装饰器之 functools.wraps
- Python 入门:装饰器(decorator)、@functools.wraps、@staticmethod、@classmethod
- 用Python functools.wraps实现装饰器
- 【笔记】如何为被装饰的函数保存元数据
- python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
- python学习笔记2-functools.wraps 装饰器
- python如何为被装饰的函数保留元数据
- python-为被装饰的函数保存元数据-26
- 用Python functools.wraps实现装饰器
- python之 装饰器(原函数有返回值,装饰器函数如何拿到原函数返回值?)
- 【python】偏函数 functools partial
- python 装饰器、内部函数、闭包简单理解
- 如何让vim自动显示函数声明-使用 echofunc.vim插件
- try函数内部生成的变量如何全局使用?
- 浅析PHP中call user func()函数及如何使用call user func调用自定义函数
- Python下如何使用第三方函数库
- Python下使用help(dict),显示'more'不是内部或外部命令,也不是可运行的程序或批处理文件,该如何处理?