一、常规的装饰器,比如 @auth,执行2步操作:
1、执行auth函数,并传参func进来
2、获取返回值,并赋值给被装饰器的函数的函数名(如让fetch_server_list等于返回值)
二、而带参数的装饰器,比如 @auth(before,after),则执行3步操作:
1、执行auth(before,after)这个函数,得到返回值ret(假设返回值为ret)
2、创建装饰器,获取返回值,拼接为@ret
3、相当于@auth函数的2个步骤:
1)执行ret函数
2)将ret函数的返回值赋值给被装饰器的函数的函数名