python3装饰器--被装饰函数有入参

136 阅读1分钟

import time

#python闭包打印日志功能

def log_wraper(func):

#由于被装饰的函数需要传参,这里加上*args,**kwargs
def inner(*args,**kwargs):
    start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    func(*args,**kwargs)
    end_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    print("logging: func:{} runs from {} to {}".format(func.__name__,start_time,end_time))

return inner

@log_wraper

def fib_recur(n,lis=[]):

"""
#斐波那契额数列--递归
"""

assert n >= 0,"peter,n > 0"
for i in range(n):
    if i == 0 or i == 1:
        lis.append(1)
    else:
        lis.append(lis[i-1] + lis[i-2])
print(lis)

if name == 'main':

fib_recur(20)