装饰器的应用-访问频繁

# !/usr/bin/env python
# -*- coding:utf-8 -*-

"""
实现一个装饰器,限制该函数被调用的颜率,5秒一次
"""
import time


def time_limit_decorator(func):
    # 记录第一次调用函数hello的时间节点。闭包,这个变量不会随着函数调用结束而消失
    first_time_call = 0

    def inner(*args, **kwargs):
        nonlocal first_time_call
        if time.time() - first_time_call > 5:
            res = func(*args, **kwargs)
            first_time_call = time.time()
            return res
        else:
            print('对不起,您访问的太频繁')
            first_time_call = time.time()
            return
    return inner


@time_limit_decorator
def hello(name):
    print(f'你好{name}!!!')


hello('albert')
time.sleep(3)
# 睡眠3秒后,调用函数不成功的
hello('don')
# 再次睡眠3秒后,调用函数还是不成功的
hello('carry')
# 再次睡眠6秒后,可以调用成功
time.sleep(6)
hello('hardy')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值