参考文章:https://foofish.net/python-decorator.html
函数装饰器
import logging
def use_logging(func):
logging.info("%s is running" % func.__name__)
func()
def use_logging1(func):
def wrapper(*args): # 带参数的
logging.info("%s is running" % func.__name__)
func(*args)
return wrapper
@use_logging1
def foo(name, attr="big fool"):
print("%s is a %s" % (name, attr))
@use_logging1
def poo(name):
print("%s is a pool" % name)
if __name__ == "__main__":
foo("Li")
poo("Dongting")
类装饰器
class Foo(object):
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print("class decorator running")
self.func()
print("class decorator ending")
@Foo
def bar():
print("i am a bar")
本文详细解析了Python中函数装饰器和类装饰器的工作原理,通过实例展示了如何使用装饰器来增强函数的功能,同时介绍了装饰器如何处理带有参数的函数。
17万+

被折叠的 条评论
为什么被折叠?



