import pdb def tag(token): def wrap(f): def inner(*args, **kwargs): print('<{}>'.format(token)) result = f(*args, **kwargs) print(''.format(token)) return result return inner return wrap @tag('test') def foo(val): print('hello world') return "Value" + str(val) @tag('test2') def foo2(): print('hello world2') return 'Value2' if __name__ == '__main__': print(foo(1)) print(foo(2)) print(foo2())