def dec(func): print('i\'m decrorator') def wrapper(*args, **kw): return func(*args, **kw) return wrapper @dec def test(arg): print('i\'m %s' % arg) print('start') t = test('admin')执行结果是: i'm decrorator start i'm admin 可以看到“start”不是第一个输出的,以上面的为例,装饰器执行的时候是这样的: test = dec(test),此时test已经被装饰为dec(test),然后是执行print('start'),然后再是执行test函数,参数为“admin”,将结果赋值给t
Python装饰器的执行过程简析
以前对Python装饰器的执行顺序理解有点问题,如果使用了装饰器,那么装饰器将在任何函数执行前执行,比如下面的代码: