1.什么是python中的装饰器?
就python而言,装饰器本质上是python中的一个函数或类,它可以让其他函数或类在不做任何代码修改的前提下增加额外的功能。同时装饰器返回的也是一个类或对象。
2.写一个简单的装饰器如函数中插入日志
1.1最初的业务代码
import logging
def useloginfo(func):
logging.info("%s is running" % func._name)
func()
def foo():
print("i am foo")
useloginfo(foo)
1.2转化为装饰器后的代码
import logging
def useloginfo(func):
def wrapper():
logging.info("%s is running" % func._name)
return func
return wrapper
def foo():
print("i am foo")
res = useloginfo(foo)
res()
1.3通过语法糖实现的代码
import logging
def useloginfo(func):
def wrapper():
logging.info("%s is running" % func._name)
return func
return wrapper
@useloginfo
def foo():
print("i am foo")
foo()
3.什么是python中的语法糖
@符号就是python中的语法糖,它放在函数开始定义的地方,这样就可以省略最后一步再次赋值的操作。