# 装饰器 # 定义装饰器 def decorator(f): def innerfunc(): print("调用前") f() print("调用后") pass return innerfunc # 外部函数 要返回内部函数 pass @decorator def calSum(): print("执行函数代码") pass calSum() # 调用的时候还是调用原函数 # 装饰器传参 # 带普通参数的装饰器 def deco2(f): def innerFunc(x, y): print("传入了参数:") result = f(x, y) print("哈哈") return result pass return innerFunc pass @deco2 def cal(x, y): print(x + y) return x+y pass r = cal(10, 20) print(r) # 如果不用装饰器 也是python的必考笔试题 import time def func1(a, b): startTime = time.clock() a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.1) endTime = time.clock() print(endTime - startTime) pass def func2(a, b, c): startTime = time.clock() # 代码是侵入式 a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.2) endTime = time.clock() print(endTime - startTime) pass def func3(a, b, x=10, **kw,): startTime = time.clock() a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.3) endTime = time.clock() print(endTime - startTime) pass # AOP 装饰器实现性能测试 优秀的代码 def performance(f): def innerfunc(*argv, **kw): startTime = time.clock() f(*argv, **kw) endTime = time.clock() print("函数" + f.__str__() + "执行了:", endTime - startTime) pass return innerfunc pass @performance def func4(a, b): a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.1) pass @performance def func5(a, b, c, *argv): print(a + b) a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.2) pass @performance def func6(a, b, x=10, **kw): a = 1 b = 2 c = a + b d = 10000*10000 time.sleep(0.3) pass func4(10, 20) func5(10, 20, 30, 1, 2, 3, 4, 5) func6(1,2,x=20, y=1)