首页 > 代码库 > python3练习-装饰器
python3练习-装饰器
在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程。记录一下自己的课后习题解法。
问题:请编写一个decorator,能在函数调用的前后打印出‘begin call‘和‘end call‘的日志。
写出一个@log
的decorator,使它既支持:
@logdef f(): pass
又支持:
@log(‘execute‘)def f(): pass
示例代码(个人练习,如有问题欢迎斧正):# ! usr/bin/env python3# -*- coding:utf-8 -*-import functoolsdef log(*text): def decorator(func): @functools.wraps(func) def warpper(*args,**kw): if(isinstance(text,(list,tuple))): print(‘Info:‘ , text) print(‘begin call %s():‘ % func.__name__) else: print(‘begin call %s():‘ % func.__name__) func(*args,**kw) print(‘-------‘,‘end call %s():‘ % func.__name__,‘--------------‘) return warpper return decorator@log([‘execute‘,‘beginOtherInfo‘])def now(): print(‘test function‘)@log()def now2(): print(‘test function2‘)
now()now2()
python3练习-装饰器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。