# !/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')
09-09
1177
07-19
5904
10-03
438