在廖雪峰老师那里学习中遇到的题目
请编写一个decorator,能在函数调用的前后打印出'begin call'
和'end call'
的日志。
再思考一下能否写出一个@log
的decorator,使它既支持:
@log
def f():
pass
又支持:
@log('execute')
def f():
pass
第一题
def log(func): def wrapper(*args, **kw): print 'begin call' func(*args, **kw) print 'end call' return wrapper @log def now(): print 'this func'
第二题
def log1(*text): def decorator(func): def wrapper(*args, **kw): print '%s %s():' % (text, func.__name__) return func(*args, **kw) return wrapper return decorator @log1('execute') def now1(): print '2013-12-25' print now1()
毕竟刚接触Python,第二个感觉有点怪怪的,如果大家有更好的想法可以直接提出来。