不带参数的装饰器需要注意的一些细节因此一个装饰器一般对应两个函数,一个是decorator函数,用来进行一些初始化操作处理,一个是decorated_func用来实现对被装饰的函数func的额外处理。并且为了保持对func的引用,decorated_func一般作为decorator的内部函数decorator函数只在函数声明的时候被调用一次装饰器实际上是语法糖,在声明函数之后就会被调用,产生decorated_func,并把func符号的引用替换为decorated_func。如果要保证返回的decorated_func的函数名与func的函数名相同,应当在decorator函数返回decorated_func之前,加入decorated_func.name = func.name, 另外functools模块提供了wraps装饰器,可以完成这一动作。并且声明一次函数调用一次decorator函数,所以不同函数的计数器之间互不冲突,例如:

python装饰器-限制函数调用次数的方法(10s调用一次)

python装饰器-限制函数调用次数的方法(10s调用一次)

python装饰器-限制函数调用次数的方法(10s调用一次)

python装饰器-限制函数调用次数的方法(10s调用一次)