装饰器函数
内容目录
import time def wrapper(func): def inner(): start = time.time() time.sleep(1) func() end = time.time() print(end-start) return inner def fon(): print('这个函数运行了多长时间') fon = wrapper(fon) fon() # 这个函数运行了多长时间 # 1.0005815029144287
import time def wrapper(func): def inner(): start = time.time() time.sleep(1) func() end = time.time() print(end-start) return inner @wrapper # fon = wrapper(fon) def fon(): print('这个函数运行了多长时间') fon() # 这个函数运行了多长时间 # 1.0002448558807373
import time def wrapper(func): def inner(a): start = time.time() time.sleep(1) func(a) end = time.time() print(end-start) return inner @wrapper # fon = wrapper(fon) def fon(a): print(a) fon('加入的参数') # 加入的参数 # 1.0004477500915527
# 带参数的装饰器 --> 一个变量控制多个函数 def fon(flag): def wrapper(f): def inner(*args,**kwargs): if flag: print('函数执行前添加的操作') ret = f(*args,**kwargs) if flag: print('函数执行后添加的操作') return ret return inner return wrapper @fon(True) def func(a): print(a) func('1') # 函数执行前添加的操作 # 1 # 函数执行后添加的操作
开放封闭原则 1.对扩展是开放的 2.对修改是封闭的
#可以hold住传入的不同参数的函数 #可以打印返回值 def wrapper(f): def inner(*args,**kwargs): print('函数执行前可以的添加操作') ret = f(*args,**kwargs) print('函数执行后可以的添加操作') return ret return inner @wrapper def func(a,b): return a if a>b else b print(func(1,2)) # 函数执行前可以的添加操作 # 函数执行后可以的添加操作 # 2
def index(): '''这是一个主页信息''' print('from index') print(index.__doc__) #查看函数注释的方法 print(index.__name__) #查看函数名的方法 #这是一个主页信息 #index
def wrapper1(func): def inner(): print('wrapper1 ,before func') func() print('wrapper1 ,after func') return inner def wrapper2(func): def inner(): print('wrapper2 ,before func') func() print('wrapper2 ,after func') return inner @wrapper2 @wrapper1 def f(): print('in f') f() # wrapper2 ,before func # wrapper1 ,before func # in f # wrapper1 ,after func # wrapper2 ,after func #输出结果顺序 --> 俄罗斯套娃

浙公网安备 33010602011771号