Well, evaluation of decorators does start at the last, but that is during definition time, not execution time. If you have the following code:
def decor_1(func):
print("Decor 1")
def wrap_1(*args, **kwargs):
print("Wrap 1")
return func(*args, **kwargs)
return wrap_1