廖雪峰python装饰器作业答案

import functools

def log(arg):
if isinstance(arg, str):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print(arg)
print(‘begin call’)
fn = func(*args, **kw)
print(‘end call’)
return fn
return wrapper
return decorator
else:
@functools.wraps(arg)
def wrapper(*args, **kw):
print(‘begin call’)
fn = arg(*args, **kw)
print(‘end call’)
return fn
return wrapper

@log
def f1():
print(‘f1’)

f1()

@log(‘execute’)
def f2():
print(‘f2’)

f2()

你可能感兴趣的:(廖雪峰python装饰器作业答案)