# 装饰器
# 定义装饰器
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)
Python基础:Python中的装饰器和实现通用的装饰器,实现对任意函数的性能统计测试
最新推荐文章于 2024-09-07 14:57:56 发布

20万+

被折叠的 条评论
为什么被折叠?



