def log(text): if not callable(text): def decorator(func): @functools.wraps(func) def wrapper(*args,**kw): print('%s %s:()' % (text,func.__name__)) return func(*args,**kw) return wrapper return decorator else: @functools.wraps(func) def wrapper2(*args,**kw): print('call %s:()' % func.__name__) return func(*args,**kw) return wrapper2