def trace(func): def wrapper(*args): print(' ' * wrapper.space, end = '') print('{} <- {}'.format(func.__name__, str(args))) wrapper.space += 1 val = func(*args) wrapper.space -= 1 print(' ' * wrapper.space, end = '') print('{} -> {}'.format(func.__name__, str(args))) return val wrapper.space = 0 return wrapper @trace def puissance(a, n): pass @trace def expoR(a, n): pass