1. 一个计时操作。
from time import time
# 0. python3 -i some.py 这里的 -i 指的是进入交互模式,省略导包。
# 1. 这个timer的意思就是,对于任意的一个函数func而言,
# 只要你使用了我这个timer,那么你就被包含在我里面了
# 我都要对你进行计时操作。
def timer(func):
def f(*args, **kwargs):
befor = time()
rv = func(*args, **kwargs)
after = time()
print("time cost: ", after - befor)
return rv
return f
# 2. 假如不使用装饰器的话,正常调用timer()
# 实钓调用的话是 res(3)
def add (x, y=10):
return x+y
res = timer(add)
# 3.加上装饰器之后,一定会执行timer()这个方法
@timer
def sub(x, y=10):
return x -y
2. 另一个例子。比如查看网络情况。
import requests
def safe(func):
def report_status(*args, **kwargs):
resp = requests.get("https://www.baidu.com").status_code
print(resp)
res = func(*args, **kwargs)
# 这里也可以来看看是哪个函数在运行.
# 主要是看看这个format的写法。
print("now running {.__name__}".format(func))
return res # 不管你想咋办,我都检查一下网络通畅情况。
return report_status
@safe
def goodday(x=2):
return x
参考:
网友评论