python3 基础笔记 之装饰器(例子)

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

参考:

你可能感兴趣的:(python3 基础笔记 之装饰器(例子))