# 装饰器,其实就是函数式编程,执行函数时,首先调用被装饰的函数,及@符号修饰的函数,
# 装饰器需要传入一个参数,代表被装饰的函数
# 函数的传参通过*args来进行传递,直接使用func(*args)便执行了被装饰函数
def user_info(func):
def wrapper(*args):
print("before 调用被装饰函数之前执行")
print(func)
print(*args)
func(*args)
print("after 调用被装饰函数之后执行")
return wrapper
@user_info
def my_info(name, age, job, like):
print(name+str(age))
for i in job:
print(i)
for i in like.keys():
print(i+":"+like[i])
if __name__ == '__main__':
my_info("张三", 23, ["A", "B"], {"english": "66", "语文": "88"})
执行结果:
before 调用被装饰函数之前执行
<function my_info at 0x0000014C63F33CA0>
张三 23 [‘A’, ‘B’] {‘english’: ‘66’, ‘语文’: ‘88’}
张三23
A
B
english:66
语文:88
after 调用被装饰函数之后执行