#!/usr/bin/env python
# coding=utf-8
# author: wz
# mail: 277215243@qq.com
# datetime:2019/3/10 2:24 AM
# web: https://www.bthlt.com
class Log():
def __init__(self, func):
print('start init')
self.func = func
def __call__(self, *args, **kwargs):
print('start call')
self.func()
@Log
def test():
import time
print('test')
for i in range(3):
print i
time.sleep(1)
test()
"""
start init
start call
test
0
1
2
"""
[root@wangzi py]# cat repeat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def repeat(number=3):
"""多次重复执行装饰函数,
返回最后一次原始函数调用的值作为结果。
:param number: 重复次数,默认值是3
"""
def actual_decorator(function):
def warpper(*args,**kwargs):
result = None
for _ in range(number):
result = function(*args,**kwargs)
return result
return warpper
return actual_decorator
@repeat(2)
def foo():
print('foof')
foo()
@repeat()
def bar():
print('bar')
bar()
[root@wangzi py]# python repeat.py
foof
foof
bar
bar
bar