Explique como o decorador Python funciona [duplicado]

Esta pergunta já tem uma resposta aqui:

Como fazer uma cadeia de decoradores de funções? 17 respostas

Este é um exemplo para o decorador python. Não consigo entender como isso funciona. Por favor, explique-me o fluxo de controle do exemplo fornecido. Eu serei muito grato.

def helloSolarSystem(original_function):
   def new_function(*args, **kwargs):
        original_function(*args, **kwargs)  
        print("Hello, solar system!")
   return new_function

def helloGalaxy(original_function):
    def new_function(*args, **kwargs):
        original_function(*args, **kwargs)  
        print("Hello, galaxy!")
    return new_function

@helloGalaxy
@helloSolarSystem
def hello(targetName=None):
     if targetName:
        print("Hello, " +  targetName +"!")
     else:
        print("Hello, world!")
hello("Earth")

questionAnswers(2)

yourAnswerToTheQuestion