请教python的装饰器语法

请教python的装饰器语法

from time import time
#测试运行时间
def cost_time(func):
    def result(*args,**dic):
        beign=time()
        func(*args,**dic)
        print "cost time : ",time()-beign
    return result

@cost_time
def show(n):
    for x in range(n):print x

>>> show(10)

当我看到这里的时候,原理解释太少了,又卡住了。这样的语法。谁能帮我讲解下原理和执行过程,谢谢。
decorator的语法一般为:

@a
def b():

上面的写法相当于:

b = a(b)

所以经过上面的处理之后,b已经是一个新的函数了。
cost_time(show(n))
也就是这样了?

函数作为参数传递给新的函数。
难道python里的回调函数也是通过这个来实现的?
不是,应该是:

show = cost_time(show)
show(n)

cost_time需要的是一个函数,而不是函数的运行结果。