标签:装饰器 http *args 验证 功能 rgs pre 简单 def
简单总结
装饰器的本质:一个闭包函数
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展
def login(func):#等同于login(vv),ff=name def inner(x): print("装饰器的简单实现") func(x) #此时ff等于vv return inner @login #等同于login(vv) def vv(name): print("实现装饰器:%s"%name) #vv => login(vv) => inner 执行login函数,并将 @login 下面的 函数 作为vv函数的参数,即:@login 等价于 login(vv) vv(‘ss‘) #inner(‘ss‘)
def timer(func): def inner(a): start = time.time() func(a) print(time.time() - start) return inner @timer def func1(a): print(a) func1(1) 装饰器——带参数的装饰器
import time def timer(func): def inner(*args,**kwargs): start = time.time() re = func(*args,**kwargs) print(time.time() - start) return re return inner @timer #==> func1 = timer(func1) def func1(a,b): print(‘in func1‘) @timer #==> func2 = timer(func2) def func2(a): print(‘in func2 and get a:%s‘%(a)) return ‘fun2 over‘ func1(‘aaaaaa‘,‘bbbbbb‘) print(func2(‘aaaaaa‘))
def w1(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner @w1 def f1(arg1,arg2,arg3): print ‘f1‘
def w1(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner def w2(func): def inner(*args,**kwargs): # 验证1 # 验证2 # 验证3 return func(*args,**kwargs) return inner @w1 @w2 def f1(arg1,arg2,arg3): print ‘f1‘
标签:装饰器 http *args 验证 功能 rgs pre 简单 def
原文地址:http://www.cnblogs.com/p0yz/p/7955705.html