title: Why is there no argument when returning function in a decorator.
body: <p>Example: 
  Fibonaci recursive function with memoize decorator. When calling function helper there  is no argument. If function helper is defined to take an argument x therefore i expect calling the function with one argument. I would like to understand why is syntax like it is? </p>
  
  <pre><code>def memoize(f):
      memo = {}
      def helper(x):
          if x not in memo:            
              memo[x] = f(x)
          return memo[x]
      return helper
  
  @memoize
  def fib(n):
      if n == 0:
          return 0
      elif n == 1:
          return 1
      else:
          return fib(n-1) + fib(n-2)
  
  print(fib(40))
  </code></pre>