现在的问题是 我认为在test2 中去掉test 也是应该能运行的但是就是不行。
所以我猜,每一层都是处理一些参数的,比如第一层如果 装饰器有arg 的话,就需要者一层,但是func 的话至少需要两层。
def test(arg):
print arg
def _test(func):
def __test(up,down):
print "start"
func(up,down)
print "tend"
return __test
return _test
def test2(arg):
def _test(func):
def __test():
print "start"
func()
print "tend"
return __test
print "test2"
return _test
@test2("de")
def test():
print "test"
return "1"
test()
test2(arg)(_test)(func)