1 def log(text=None): 2 3 if isinstance(text, str): 4 def decorator(func): 5 @functools.wraps(func) 6 def wrapper(*args, **kw): 7 print('%s %s():' % (text, func.__name__)) 8 return func(*args, **kw) 9 return wrapper 10 return decorator 11 12 else: 13 @functools.wraps(text) 14 def wrapper(*args, **kw): 15 print('call %s():' % text.__name__) 16 return text(*args, **kw) 17 return wrapper