import time
# 1 定义装饰器defget_time(fn):definner():
start = time.time()
fn()
end = time.time()print("时间:", end - start)return inner
# 2 装饰函数# 要被装饰的函数@get_timedeffunc():for i inrange(100000):print(i)
func()
08_装饰有参数的函数
# 定义装饰器deflogging(fn):# fn = sum_numdefinner(a, b):
fn(a, b)return inner # sum_num = inner# 使用装饰器装饰函数@loggingdefsum_num(a, b):
result = a + b
print(result)
sum_num(1,2)
09_装饰带有返回值的函数
# 定义装饰器deflogging(fn):# fn = sum_numdefinner(a, b):
result = fn(a, b)return result
return inner # sum_num = inner# 使用装饰器装饰函数@loggingdefsum_num(a, b):
result = a + b
return result
result = sum_num(1,2)print(result)
# 装饰器# 外部函数defdecorator(fn, flag):# 内部函数definner(num1, num2):# 判断流程if flag =="+":print("--正在努力加法计算--")elif flag =="-":print("--正在努力减法计算--")
result = fn(num1, num2)return result
return inner
# 被带有参数的装饰器装饰的函数@decorator('+')defadd(a, b):
result = a + b
return result
# 执行函数
result = add(1,3)print(result)
14_带参数的装饰器_正确用法
# 装饰器deflogging(flag):# flag = "+"# 外部函数defdecorator(fn):# 内部函数definner(num1, num2):# 判断流程if flag =="+":print("--正在努力加法计算--")elif flag =="-":print("--正在努力减法计算--")
result = fn(num1, num2)return result
return inner
# 返回装饰器return decorator
# 被带有参数的装饰器装饰的函数@logging('+')# 1 logging("+") 2 @decorator起到装饰器的功能了defadd(a, b):
result = a + b
return result
# 执行函数
result = add(1,3)print(result)
15_类中call方法的使用
# 定义一个类,实现__call__方法classCheck(object):def__call__(self,*args,**kwargs):print("我是call方法")
c = Check()
c()