wrapper的__doc,__name__修改问题
为什么这两句写在这不生效啊,一定要写在return wapper之前才行吗
正在回答 回答被采纳积分+1
我的代码是这样的:
from functools import wraps
def log(name=None):
def decoration(func):
def wapper(*args, **kwargs):
'''wapper的doc'''
print('{0}开始...'.format(name))
rest = func(*args, **kwargs)
wapper.__doc__ = func.__doc__
wapper.__name__ = func.__name__
print('{0}结束...'.format(name))
return rest
return wapper # 返回装饰器函数
return decoration #返回装饰器最外层函数
@log('add')
def add(a,b):
'''add函数doc'''
return a+b
if __name__ == '__main__':
print('doc:{0}'.format(add.__doc__))
print('name:{0}'.format(add.__name__))
rest = add(1,2)
print(rest)
运行截图是:
打印的是装饰器里的doc和name
如果我装饰器这样写:
打印结果是这样的:
打印的是被装饰的add函数的doc和name
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星