# 1.看代码写结果:
# def wrapper(f):
# def inner(*args,**kwargs):
# print(111)
# ret = f(*args,**kwargs)
# print(222)
# return ret
# return inner
#
# @wrapper
# def func():
# print(333)
#
# print(444)
# func()
# print(555)
# result: 444 111 333 222 555
# 2.编写装饰器,在每次执行被装饰函数之前打印一句’每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码’。
def decorator(func):
def inner(*args, **kwargs):
print('每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码')
ret = func(*args, **kwargs)
return ret
return inner
# 3.为函数写一个装饰器,把函数的返回值 +100 然后再返回。
# @wrapper
# def func():
# return 7
#
# result = func()
# print(result)
def wrapper(func):
def inner():
return func() + 100
return inner
# 4.请实现一个装饰器,通过一次调用是函数重复执行5次。
def wrapper(func):
def inner(*args, **kwargs):
ret = [] # 将五次的返回值装入一个列表中返回
for i in range(5):
ret.append(func(*args, **kwargs))
return ret
return inner
# 5.请实现一个装饰器,每次调用函数时,将函数名以及调用此函数的时间节点写入文件中。
# 可用代码:
# import time
# struct_time = time.localtime()
# print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 当前时间节点
# 函数名通过: 函数名.__name__获取。
import time
def wrapper(func):
def inner(*args, **kwargs):
with open(r'03 作业calling_history', encoding='utf-8', mode='a') as file_handler:
file_handler.write(func.__name__ + ' ' + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) + '
')
ret = func(*args, **kwargs)
return ret
return inner
@wrapper
def func():
print('hello world.')
func()