1. 是什么
装饰器的本质就是python函数,用来给其他函数增加额外功能。
用于提高程序复用性,减少冗余。
通俗解释:在不同内裤外面穿同一条长裤,可以在不影响内裤功能的同时增加保暖功能。不同内裤指不同的函数,同一条长裤指同一个装饰器,装饰器可以让其他函数在不需要做代码变动的前提下增加额外功能。
2. 例子
import logging
def use_logging(func):
def wrapper(*args, **kwargs):
logging.warning("%s is running" % func.__name__)
return func(*args)
return wrapper
@use_logging
def bar():
print("in bar")
bar()
"""
WARNING:root:bar is running
in bar
"""
class Foo(object):
def __init__(self, func):
self._func = func
def __call__(self):
print('class decorator runing')
self._func()
print('class decorator ending')
@Foo
def bar():
print('in bar')
bar()
"""
class decorator runing
in bar
class decorator ending
"""
参考文章