记录个人学习记录
装饰器放在一个函数开始的地方、像个帽子一样戴在某个函数头上,和这个函数绑在一起,在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数作为参数传入他头顶这顶帽子,这顶帽子我们称为 装饰器
装饰器的作用- 使代码结构清晰,更加优雅
- 将实现特定功能的代码封装成装饰器,提高代码复用率,增强代码可读性
- 日志打印器
- 执行函数前,打印一行日志,输出要执行函数信息
- 当函数执行完毕,打印日志
import logging
def logger(func):
def wrapper(*args, **kwargs):
logging.warning("当前正在执行函数{}".format(func.__name__))
func(*args, **kwargs)
logging.warning("函数执行完毕")
return wrapper
@logger
def func(x, y):
print("{} + {} = {}".format(x, y, x + y))
func(3, 6)
output:
如何实现一个带参的装饰器WARNING:root:当前正在执行函数func
3 + 6 = 9
WARNING:root:函数执行完毕
不带参装饰器,两次嵌套函数,带参的三层嵌套
def say_hello(contry):
def wrapper(func):
def deco(*args, **kwargs):
if contry == "china":
print("中国")
elif contry == "america":
print("America")
return deco
return wrapper
@say_hello("china")
def xiaoming():
pass
@say_hello("america")
def jack():
pass
xiaoming()
output:
中国
本文参考连接:https://cloud.tencent.com/developer/article/1488285



