疑难题解析
请实现功能 : 在不改变装饰器的情况下,给装饰器的执行加上log信息。(5分)
def log(wrap):
…
@log
def wrapper(func):
def inner(*args,**kwargs):
print(‘before func‘)
ret = func(*args,**kwargs)
print(‘after func‘)
return ret
return inner
@wrapper
def wahaha(name):
print(‘%s in wahaha‘%name)
wahaha(‘alex‘)
答:
def log_inner(*args,**kwargs):
inn = wrap(*args,**kwargs)
def inner(*args,**kwargs):
ret = inn(*args,**kwargs)
print(wrap.__name__,‘is running‘)
return ret
return inner
return log_inner
@log
def wrapper(func):
def inner(*args,**kwargs):
print(‘before func‘)
ret = func(*args,**kwargs)
print(‘after func‘)
return ret
return inner
@wrapper
def wahaha(name):
print(‘%s in wahaha‘%name)
wahaha(‘alex‘)
解析

当你的才华还撑不起你的野心的时候,你就应该静下心来学习;
当你的能力还驾驭不了你的目标时,就应该沉下心来历练。

浙公网安备 33010602011771号