python 装饰器
1. 无参装饰器(无函数返回值)
import time def timer(func): ''' prints function time ''' def wrapper(): start = time.time() func() print('function %s run time %s' % (func.__name__, time.time() - start)) return wrapper @timer def f1(): time.sleep(1) # 通过“睡”一会儿,模拟函数执行的时间 @timer def f2(): time.sleep(2) f1() # function f1 run time 1.0000762939453125 f2() # function f2 run time 2.000044345855713
2. 有参装饰器(无函数返回值)
import time def timer(func): def wrapper(*args, **kwargs): start = time.time() func(*args, **kwargs) print('function %s run time %s' % (func.__name__, time.time() - start)) return wrapper @timer def public(): time.sleep(0.1) print('oldboy public index page') @timer def admin(name): time.sleep(0.1) print('oldboy public admin page') # 老男孩后台页面 if name == 'root': # 只有用户名是root的用户才能访问 return 'welcome vip page' return 'name error' # 否则提示请用户名错误 public() admin('oldboy') """ # 上面两个函数执行结果 oldboy public index page # public函数执行的结果 function public run time 0.10057306289672852 oldboy public admin page # 成功进入了admin页面 function admin run time 0.10007095336914062 """
3. 有参数,有函数返回值
import time def timer(func): def wrapper(*args, **kwargs): start = time.time() ret = func(*args, **kwargs) print('function %s run time %s' % (func.__name__, time.time() - start)) return ret #被执行函数的函数返回值 return wrapper @timer def public(): time.sleep(0.1) print('oldboy public index page') @timer def admin(name): time.sleep(0.1) print('oldboy public admin page') # 老男孩后台页面 if name == 'root': # 只有用户名是root的用户才能访问 return 'welcome vip page' return 'name error' # 否则提示请用户名错误 public_ret = public() admin_ret = admin('root') print('public return:', public_ret) # public return: None print('admin return:', admin_ret) # admin return: welcome vip page

浙公网安备 33010602011771号