title: Decorator execution order
body: <pre><code>def make_bold(fn):
      return lambda : "&lt;b&gt;" + fn() + "&lt;/b&gt;"
  
  def make_italic(fn):
      return lambda : "&lt;i&gt;" + fn() + "&lt;/i&gt;"
  
  @make_bold
  @make_italic
  def hello():
    return "hello world"
  
  helloHTML = hello()
  </code></pre>
  
  <p>Output: <code>"&lt;b&gt;&lt;i&gt;hello world&lt;/i&gt;&lt;/b&gt;"</code></p>
  
  <p>I roughly understand about decorators and how it works with one of it in most examples.</p>
  
  <p>In this example, there are 2 of it. From the output, it seems that <code>@make_italic</code> executes first, then <code>@make_bold</code>.</p>
  
  <p>Does this mean that for decorated functions, it will first run the function first then moving towards to the top for other decorators? Like <code>@make_italic</code> first then <code>@make_bold</code>, instead of the opposite.</p>
  
  <p>So this means that it is different from the norm of top-down approach in most programming lang? Just for this case of decorator? Or am I wrong? </p>